summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHan Shen <shenhan@google.com>2015-11-18 00:29:47 (GMT)
committerHan Shen <shenhan@google.com>2015-11-20 01:29:00 (GMT)
commit8bfb6b2bf11cfbc445239158ec28d0988f8fa947 (patch)
tree64baf9be2b2d76eb0d3d83ec6acf3d5ddd452b64
parent932d71b859239e834651fdee549dc661cda82fe8 (diff)
downloadtoolchain_binutils-8bfb6b2bf11cfbc445239158ec28d0988f8fa947.zip
toolchain_binutils-8bfb6b2bf11cfbc445239158ec28d0988f8fa947.tar.gz
toolchain_binutils-8bfb6b2bf11cfbc445239158ec28d0988f8fa947.tar.bz2
Create an unified binutils source tree for both Android and ChromiumOS.
About source code - The base version of this binutils is newer than that of aosp/binutils-2.25, it is based on the binutils that is used to build google products and ChromiumOS. And it contains *all* local Android patches as well as all patches that are cherry-picked from upstream for aosp/binutils-2.25 tree (up to Nov. 5 - 932d71b85). You may find the detailed development history for this binutils tree here - https://chromium.googlesource.com/chromiumos/third_party/binutils/+log/unification (This CL is a combination of all the CLs in it. After this CL is submitted the tree will be identical to https://chromium.googlesource.com/chromiumos/third_party/binutils/+log/unification at 2865a3615d80bd5f82d14d7e0484e84dc052596a) About testing - We tested this binutils for both ChromiumOS and Android. For android, we tested building N4, N5X, N6, N7, N9 using new binutils, we also did a full-build of toolchain (by build.py) and built a N5X image; for ChromiumOS - it passed ChromiumOS toolchain release tests on all 4 platforms (x86, x86_64, arm32 and arm64). Change-Id: I2bb2cf579f9458d0a8bc9612331dc7d5043e3d82
-rw-r--r--binutils-2.25/ChangeLog18
-rw-r--r--binutils-2.25/MAINTAINERS5
-rw-r--r--binutils-2.25/README.google270
-rw-r--r--binutils-2.25/bfd/.gitignore40
-rw-r--r--binutils-2.25/bfd/ChangeLog429
-rw-r--r--binutils-2.25/bfd/Makefile.in2
-rw-r--r--binutils-2.25/bfd/archures.c1
-rw-r--r--binutils-2.25/bfd/bfd-in2.h1
-rwxr-xr-xbinutils-2.25/bfd/configure20
-rw-r--r--binutils-2.25/bfd/cpu-mips.c2
-rw-r--r--binutils-2.25/bfd/development.sh2
-rw-r--r--binutils-2.25/bfd/doc/Makefile.in2
-rw-r--r--binutils-2.25/bfd/elf-attrs.c4
-rw-r--r--binutils-2.25/bfd/elf32-arm.c41
-rw-r--r--binutils-2.25/bfd/elf32-avr.c39
-rw-r--r--binutils-2.25/bfd/elf32-i386.c2
-rw-r--r--binutils-2.25/bfd/elf32-spu.c14
-rw-r--r--binutils-2.25/bfd/elf64-ppc.c4
-rw-r--r--binutils-2.25/bfd/elf64-x86-64.c32
-rw-r--r--binutils-2.25/bfd/elfxx-mips.c34
-rw-r--r--binutils-2.25/bfd/version.h2
-rw-r--r--binutils-2.25/bfd/version.m42
-rw-r--r--binutils-2.25/binutils/.gitignore58
-rw-r--r--binutils-2.25/binutils/ChangeLog93
-rw-r--r--binutils-2.25/binutils/Makefile.in2
-rw-r--r--binutils-2.25/binutils/bfdtest2.c210
-rwxr-xr-xbinutils-2.25/binutils/configure20
-rw-r--r--binutils-2.25/binutils/cxxfilt.c1
-rw-r--r--binutils-2.25/binutils/doc/Makefile.am2
-rw-r--r--binutils-2.25/binutils/doc/Makefile.in4
-rw-r--r--binutils-2.25/binutils/dwarf.c926
-rw-r--r--binutils-2.25/binutils/dwarf.h3
-rw-r--r--binutils-2.25/binutils/readelf.c6
-rwxr-xr-xbinutils-2.25/compile236
-rwxr-xr-xbinutils-2.25/config.guess11
-rwxr-xr-xbinutils-2.25/config.sub11
-rwxr-xr-xbinutils-2.25/configure2
-rw-r--r--binutils-2.25/configure.ac2
-rwxr-xr-xbinutils-2.25/depcomp544
-rwxr-xr-xbinutils-2.25/djunpack.bat52
-rw-r--r--binutils-2.25/elfcpp/ChangeLog4
-rw-r--r--binutils-2.25/elfcpp/arm.h5
-rw-r--r--binutils-2.25/elfcpp/dwarf.h22
-rw-r--r--binutils-2.25/gas/.gitignore9
-rw-r--r--binutils-2.25/gas/ChangeLog250
-rw-r--r--binutils-2.25/gas/Makefile.in2
-rw-r--r--binutils-2.25/gas/app.c6
-rw-r--r--binutils-2.25/gas/as.c17
-rw-r--r--binutils-2.25/gas/as.h3
-rwxr-xr-x[-rw-r--r--]binutils-2.25/gas/config/bfin-aux.h0
-rw-r--r--binutils-2.25/gas/config/m68k-parse.y12
-rw-r--r--binutils-2.25/gas/config/obj-elf.c4
-rw-r--r--binutils-2.25/gas/config/tc-aarch64.c38
-rw-r--r--binutils-2.25/gas/config/tc-alpha.c2
-rw-r--r--binutils-2.25/gas/config/tc-bfin.c2
-rw-r--r--binutils-2.25/gas/config/tc-d10v.c4
-rw-r--r--binutils-2.25/gas/config/tc-d30v.c6
-rwxr-xr-x[-rw-r--r--]binutils-2.25/gas/config/tc-epiphany.c0
-rwxr-xr-x[-rw-r--r--]binutils-2.25/gas/config/tc-epiphany.h0
-rw-r--r--binutils-2.25/gas/config/tc-i386-intel.c4
-rw-r--r--binutils-2.25/gas/config/tc-i386.c63
-rw-r--r--binutils-2.25/gas/config/tc-i860.c2
-rw-r--r--binutils-2.25/gas/config/tc-m68hc11.c2
-rw-r--r--binutils-2.25/gas/config/tc-m68k.c24
-rw-r--r--binutils-2.25/gas/config/tc-mips.c6
-rw-r--r--binutils-2.25/gas/config/tc-mn10200.c2
-rw-r--r--binutils-2.25/gas/config/tc-nios2.c1115
-rw-r--r--binutils-2.25/gas/config/tc-s390.c4
-rw-r--r--binutils-2.25/gas/config/tc-sh.c2
-rw-r--r--binutils-2.25/gas/config/tc-sparc.c4
-rw-r--r--binutils-2.25/gas/config/tc-tic30.c2
-rw-r--r--binutils-2.25/gas/config/tc-tic4x.c4
-rw-r--r--binutils-2.25/gas/config/tc-z80.c4
-rwxr-xr-xbinutils-2.25/gas/configure20
-rw-r--r--binutils-2.25/gas/doc/Makefile.am2
-rw-r--r--binutils-2.25/gas/doc/Makefile.in4
-rw-r--r--binutils-2.25/gas/doc/as.texinfo2
-rw-r--r--binutils-2.25/gas/doc/c-aarch64.texi4
-rw-r--r--binutils-2.25/gas/doc/c-mips.texi1
-rw-r--r--binutils-2.25/gas/dwarf2dbg.c817
-rw-r--r--binutils-2.25/gas/dwarf2dbg.h19
-rw-r--r--binutils-2.25/gas/ecoff.c102
-rw-r--r--binutils-2.25/gas/expr.c2
-rw-r--r--binutils-2.25/gas/frags.c10
-rw-r--r--binutils-2.25/gas/input-file.c4
-rw-r--r--binutils-2.25/gas/input-scrub.c6
-rw-r--r--binutils-2.25/gas/po/gas.pot8103
-rw-r--r--binutils-2.25/gas/read.c22
-rw-r--r--binutils-2.25/gas/subsegs.c2
-rw-r--r--binutils-2.25/gas/symbols.c18
-rw-r--r--binutils-2.25/gas/testsuite/ChangeLog54
-rw-r--r--binutils-2.25/gas/testsuite/gas/aarch64/mapmisc.d2
-rw-r--r--binutils-2.25/gas/testsuite/gas/all/cond.l3
-rw-r--r--binutils-2.25/gas/testsuite/gas/all/cond.s11
-rw-r--r--binutils-2.25/gas/testsuite/gas/all/incbin.d2
-rw-r--r--[-rwxr-xr-x]binutils-2.25/gas/testsuite/gas/epiphany/sample.s0
-rw-r--r--binutils-2.25/gas/testsuite/gas/i386/reloc64.d2
-rw-r--r--binutils-2.25/gas/testsuite/gas/i386/reloc64.l10
-rw-r--r--binutils-2.25/gas/testsuite/gas/i386/reloc64.s16
-rw-r--r--binutils-2.25/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d16
-rw-r--r--binutils-2.25/gas/testsuite/gas/i386/x86-64-mpx-branch-2.d16
-rw-r--r--binutils-2.25/gas/testsuite/gas/mips/mips.exp4
-rw-r--r--binutils-2.25/gas/testsuite/gas/mips/octeon3.d20
-rw-r--r--binutils-2.25/gas/testsuite/gas/mips/octeon3.s22
-rwxr-xr-x[-rw-r--r--]binutils-2.25/gas/testsuite/gas/pe/pe.exp0
-rw-r--r--binutils-2.25/gas/write.c4
-rw-r--r--binutils-2.25/gold/ChangeLog602
-rw-r--r--binutils-2.25/gold/Makefile.am4
-rw-r--r--binutils-2.25/gold/Makefile.in242
-rw-r--r--binutils-2.25/gold/NEWS2
-rw-r--r--binutils-2.25/gold/README2
-rw-r--r--binutils-2.25/gold/aarch64-reloc-property.cc2
-rw-r--r--binutils-2.25/gold/aarch64-reloc-property.h2
-rw-r--r--binutils-2.25/gold/aarch64-reloc.def4
-rw-r--r--binutils-2.25/gold/aarch64.cc199
-rw-r--r--binutils-2.25/gold/archive.cc2
-rw-r--r--binutils-2.25/gold/archive.h2
-rw-r--r--binutils-2.25/gold/arm-reloc-property.cc2
-rw-r--r--binutils-2.25/gold/arm-reloc-property.h2
-rw-r--r--binutils-2.25/gold/arm-reloc.def2
-rw-r--r--binutils-2.25/gold/arm.cc103
-rw-r--r--binutils-2.25/gold/attributes.cc2
-rw-r--r--binutils-2.25/gold/attributes.h2
-rw-r--r--binutils-2.25/gold/binary.cc2
-rw-r--r--binutils-2.25/gold/binary.h2
-rw-r--r--binutils-2.25/gold/common.cc2
-rw-r--r--binutils-2.25/gold/common.h2
-rw-r--r--binutils-2.25/gold/compressed_output.cc2
-rw-r--r--binutils-2.25/gold/compressed_output.h2
-rwxr-xr-xbinutils-2.25/gold/configure40
-rw-r--r--binutils-2.25/gold/configure.ac23
-rw-r--r--binutils-2.25/gold/configure.tgt2
-rw-r--r--binutils-2.25/gold/copy-relocs.cc2
-rw-r--r--binutils-2.25/gold/copy-relocs.h2
-rw-r--r--binutils-2.25/gold/cref.cc2
-rw-r--r--binutils-2.25/gold/cref.h2
-rw-r--r--binutils-2.25/gold/debug.h7
-rw-r--r--binutils-2.25/gold/defstd.cc2
-rw-r--r--binutils-2.25/gold/defstd.h2
-rw-r--r--binutils-2.25/gold/descriptors.cc2
-rw-r--r--binutils-2.25/gold/descriptors.h2
-rw-r--r--binutils-2.25/gold/dirsearch.cc2
-rw-r--r--binutils-2.25/gold/dirsearch.h2
-rw-r--r--binutils-2.25/gold/dwarf_reader.cc503
-rw-r--r--binutils-2.25/gold/dwarf_reader.h39
-rw-r--r--binutils-2.25/gold/dwp.cc74
-rw-r--r--binutils-2.25/gold/dwp.h2
-rw-r--r--binutils-2.25/gold/dynobj.cc13
-rw-r--r--binutils-2.25/gold/dynobj.h2
-rw-r--r--binutils-2.25/gold/ehframe.cc20
-rw-r--r--binutils-2.25/gold/ehframe.h12
-rw-r--r--binutils-2.25/gold/errors.cc5
-rw-r--r--binutils-2.25/gold/errors.h2
-rw-r--r--binutils-2.25/gold/expression.cc2
-rw-r--r--binutils-2.25/gold/ffsll.c2
-rw-r--r--binutils-2.25/gold/fileread.cc2
-rw-r--r--binutils-2.25/gold/fileread.h2
-rw-r--r--binutils-2.25/gold/freebsd.h2
-rw-r--r--binutils-2.25/gold/ftruncate.c2
-rw-r--r--binutils-2.25/gold/gc.cc2
-rw-r--r--binutils-2.25/gold/gc.h2
-rw-r--r--binutils-2.25/gold/gdb-index.cc2
-rw-r--r--binutils-2.25/gold/gdb-index.h2
-rw-r--r--binutils-2.25/gold/gold-threads.cc6
-rw-r--r--binutils-2.25/gold/gold-threads.h2
-rw-r--r--binutils-2.25/gold/gold.cc68
-rw-r--r--binutils-2.25/gold/gold.h2
-rw-r--r--binutils-2.25/gold/i386.cc2
-rw-r--r--binutils-2.25/gold/icf.cc2
-rw-r--r--binutils-2.25/gold/icf.h2
-rw-r--r--binutils-2.25/gold/incremental-dump.cc2
-rw-r--r--binutils-2.25/gold/incremental.cc2
-rw-r--r--binutils-2.25/gold/incremental.h2
-rw-r--r--binutils-2.25/gold/int_encoding.cc2
-rw-r--r--binutils-2.25/gold/int_encoding.h2
-rw-r--r--binutils-2.25/gold/layout.cc129
-rw-r--r--binutils-2.25/gold/layout.h8
-rw-r--r--binutils-2.25/gold/main.cc2
-rw-r--r--binutils-2.25/gold/mapfile.cc2
-rw-r--r--binutils-2.25/gold/mapfile.h2
-rw-r--r--binutils-2.25/gold/merge.cc2
-rw-r--r--binutils-2.25/gold/merge.h2
-rw-r--r--binutils-2.25/gold/mips.cc2
-rw-r--r--binutils-2.25/gold/mremap.c2
-rw-r--r--binutils-2.25/gold/nacl.cc2
-rw-r--r--binutils-2.25/gold/nacl.h2
-rw-r--r--binutils-2.25/gold/object.cc31
-rw-r--r--binutils-2.25/gold/object.h118
-rw-r--r--binutils-2.25/gold/options.cc37
-rw-r--r--binutils-2.25/gold/options.h42
-rw-r--r--binutils-2.25/gold/output.cc2
-rw-r--r--binutils-2.25/gold/output.h2
-rw-r--r--binutils-2.25/gold/parameters.cc2
-rw-r--r--binutils-2.25/gold/parameters.h2
-rw-r--r--binutils-2.25/gold/plugin.cc2
-rw-r--r--binutils-2.25/gold/plugin.h2
-rw-r--r--binutils-2.25/gold/po/Make-in2
-rw-r--r--binutils-2.25/gold/powerpc.cc53
-rw-r--r--binutils-2.25/gold/pread.c2
-rw-r--r--binutils-2.25/gold/readsyms.cc2
-rw-r--r--binutils-2.25/gold/readsyms.h2
-rw-r--r--binutils-2.25/gold/reduced_debug_output.cc2
-rw-r--r--binutils-2.25/gold/reduced_debug_output.h2
-rw-r--r--binutils-2.25/gold/reloc-types.h2
-rw-r--r--binutils-2.25/gold/reloc.cc2
-rw-r--r--binutils-2.25/gold/reloc.h2
-rw-r--r--binutils-2.25/gold/resolve.cc2
-rw-r--r--binutils-2.25/gold/script-c.h4
-rw-r--r--binutils-2.25/gold/script-sections.cc2
-rw-r--r--binutils-2.25/gold/script-sections.h2
-rw-r--r--binutils-2.25/gold/script.cc7
-rw-r--r--binutils-2.25/gold/script.h2
-rw-r--r--binutils-2.25/gold/sparc.cc2
-rw-r--r--binutils-2.25/gold/stringpool.cc6
-rw-r--r--binutils-2.25/gold/stringpool.h2
-rw-r--r--binutils-2.25/gold/symtab.cc35
-rw-r--r--binutils-2.25/gold/symtab.h8
-rw-r--r--binutils-2.25/gold/system.h2
-rw-r--r--binutils-2.25/gold/target-reloc.h2
-rw-r--r--binutils-2.25/gold/target-select.cc2
-rw-r--r--binutils-2.25/gold/target-select.h2
-rw-r--r--binutils-2.25/gold/target.cc2
-rw-r--r--binutils-2.25/gold/target.h9
-rw-r--r--binutils-2.25/gold/testsuite/Makefile.am72
-rw-r--r--binutils-2.25/gold/testsuite/Makefile.in5174
-rwxr-xr-xbinutils-2.25/gold/testsuite/arm_abs_global.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/arm_attr_merge.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/arm_branch_in_range.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/arm_branch_out_of_range.sh2
-rw-r--r--binutils-2.25/gold/testsuite/arm_branch_range.t2
-rwxr-xr-xbinutils-2.25/gold/testsuite/arm_cortex_a8.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/arm_exidx_test.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/arm_farcall_arm_arm.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/arm_farcall_arm_thumb.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/arm_farcall_thumb_arm.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/arm_farcall_thumb_thumb.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/arm_fix_1176.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/arm_fix_v4bx.sh2
-rw-r--r--binutils-2.25/gold/testsuite/arm_thm_jump11.t2
-rw-r--r--binutils-2.25/gold/testsuite/arm_thm_jump8.t2
-rwxr-xr-xbinutils-2.25/gold/testsuite/arm_unaligned_reloc.sh2
-rw-r--r--binutils-2.25/gold/testsuite/basic_test.cc2
-rw-r--r--binutils-2.25/gold/testsuite/binary_test.cc2
-rw-r--r--binutils-2.25/gold/testsuite/binary_unittest.cc2
-rw-r--r--binutils-2.25/gold/testsuite/common_test_1.c2
-rw-r--r--binutils-2.25/gold/testsuite/common_test_1_v1.c2
-rw-r--r--binutils-2.25/gold/testsuite/common_test_1_v2.c2
-rw-r--r--binutils-2.25/gold/testsuite/common_test_2.c2
-rw-r--r--binutils-2.25/gold/testsuite/common_test_3.c2
-rw-r--r--binutils-2.25/gold/testsuite/constructor_test.cc2
-rw-r--r--binutils-2.25/gold/testsuite/copy_test.cc2
-rw-r--r--binutils-2.25/gold/testsuite/copy_test_1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/copy_test_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/copy_test_v1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/debug_msg.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/debug_msg.sh14
-rwxr-xr-xbinutils-2.25/gold/testsuite/defsym_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/disable_pie_unsafe_size_test.cc29
-rwxr-xr-xbinutils-2.25/gold/testsuite/disable_pie_unsafe_size_test.sh32
-rw-r--r--binutils-2.25/gold/testsuite/discard_locals_relocatable_test.c2
-rw-r--r--binutils-2.25/gold/testsuite/discard_locals_test.c2
-rwxr-xr-xbinutils-2.25/gold/testsuite/discard_locals_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/dwp_test.h2
-rw-r--r--binutils-2.25/gold/testsuite/dwp_test_1.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/dwp_test_1.sh2
-rw-r--r--binutils-2.25/gold/testsuite/dwp_test_1b.cc2
-rw-r--r--binutils-2.25/gold/testsuite/dwp_test_2.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/dwp_test_2.sh2
-rw-r--r--binutils-2.25/gold/testsuite/dwp_test_main.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/dyn_weak_ref.sh2
-rw-r--r--binutils-2.25/gold/testsuite/dyn_weak_ref_1.c2
-rw-r--r--binutils-2.25/gold/testsuite/dyn_weak_ref_2.c2
-rwxr-xr-xbinutils-2.25/gold/testsuite/dynamic_list.sh2
-rw-r--r--binutils-2.25/gold/testsuite/dynamic_list_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/dynamic_list_2.t2
-rw-r--r--binutils-2.25/gold/testsuite/dynamic_list_lib1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/dynamic_list_lib2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/ehdr_start_def.cc2
-rw-r--r--binutils-2.25/gold/testsuite/ehdr_start_test.cc2
-rw-r--r--binutils-2.25/gold/testsuite/ehdr_start_test.t2
-rwxr-xr-xbinutils-2.25/gold/testsuite/ehdr_start_test_4.sh2
-rw-r--r--binutils-2.25/gold/testsuite/exception_test.h2
-rw-r--r--binutils-2.25/gold/testsuite/exception_test_1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/exception_test_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/exception_test_main.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/exclude_libs_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/final_layout.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/final_layout.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/gc_comdat_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/gc_comdat_test_1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/gc_comdat_test_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/gc_dynamic_list_test.c2
-rwxr-xr-xbinutils-2.25/gold/testsuite/gc_dynamic_list_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/gc_dynamic_list_test.t2
-rw-r--r--binutils-2.25/gold/testsuite/gc_orphan_section_test.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/gc_orphan_section_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/gc_tls_test.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/gc_tls_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/gdb_index_test.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/gdb_index_test_1.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/gdb_index_test_2.sh2
-rw-r--r--binutils-2.25/gold/testsuite/gdb_index_test_3.c2
-rwxr-xr-xbinutils-2.25/gold/testsuite/gdb_index_test_3.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/gdb_index_test_4.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/gdb_index_test_comm.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/hidden_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/hidden_test_1.c2
-rw-r--r--binutils-2.25/gold/testsuite/hidden_test_main.c2
-rw-r--r--binutils-2.25/gold/testsuite/icf_keep_unique_test.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/icf_keep_unique_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/icf_preemptible_functions_test.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/icf_preemptible_functions_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/icf_safe_so_test.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/icf_safe_so_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/icf_safe_test.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/icf_safe_test.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/icf_sht_rel_addend_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/icf_sht_rel_addend_test_1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/icf_sht_rel_addend_test_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/icf_string_merge_test.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/icf_string_merge_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/icf_test.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/icf_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/icf_virtual_function_folding_test.cc2
-rw-r--r--binutils-2.25/gold/testsuite/incr_comdat_test_1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/incr_comdat_test_2_v1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/incr_comdat_test_2_v2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/incr_comdat_test_2_v3.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/incremental_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/incremental_test_1.c2
-rw-r--r--binutils-2.25/gold/testsuite/incremental_test_2.c2
-rw-r--r--binutils-2.25/gold/testsuite/initpri1.c2
-rw-r--r--binutils-2.25/gold/testsuite/initpri2.c2
-rw-r--r--binutils-2.25/gold/testsuite/initpri3.c2
-rw-r--r--binutils-2.25/gold/testsuite/justsyms.t2
-rw-r--r--binutils-2.25/gold/testsuite/justsyms_1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/justsyms_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/justsyms_exec.c2
-rw-r--r--binutils-2.25/gold/testsuite/justsyms_lib.c2
-rw-r--r--binutils-2.25/gold/testsuite/large.c2
-rw-r--r--binutils-2.25/gold/testsuite/large_symbol_alignment.cc2
-rw-r--r--binutils-2.25/gold/testsuite/leb128_unittest.cc2
-rw-r--r--binutils-2.25/gold/testsuite/many_sections_test.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/memory_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/memory_test_inc.t28
-rw-r--r--binutils-2.25/gold/testsuite/memory_test_inc_1.t.src1
-rw-r--r--binutils-2.25/gold/testsuite/memory_test_inc_2.t.src1
-rw-r--r--binutils-2.25/gold/testsuite/memory_test_inc_3.t.src1
-rwxr-xr-xbinutils-2.25/gold/testsuite/merge_string_literals.sh2
-rw-r--r--binutils-2.25/gold/testsuite/merge_string_literals_1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/merge_string_literals_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/missing_key_func.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/missing_key_func.sh2
-rw-r--r--binutils-2.25/gold/testsuite/no_version_test.c2
-rwxr-xr-xbinutils-2.25/gold/testsuite/no_version_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/object_unittest.cc2
-rw-r--r--binutils-2.25/gold/testsuite/pie_copyrelocs_shared_test.cc2
-rw-r--r--binutils-2.25/gold/testsuite/pie_copyrelocs_test.cc2
-rw-r--r--binutils-2.25/gold/testsuite/plugin_common_test_1.c2
-rw-r--r--binutils-2.25/gold/testsuite/plugin_common_test_2.c2
-rw-r--r--binutils-2.25/gold/testsuite/plugin_final_layout.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/plugin_final_layout.sh2
-rw-r--r--binutils-2.25/gold/testsuite/plugin_section_order.c2
-rw-r--r--binutils-2.25/gold/testsuite/plugin_test.c2
-rwxr-xr-xbinutils-2.25/gold/testsuite/plugin_test_1.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/plugin_test_10.sh2
-rw-r--r--[-rwxr-xr-x]binutils-2.25/gold/testsuite/plugin_test_11.sh0
-rwxr-xr-xbinutils-2.25/gold/testsuite/plugin_test_2.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/plugin_test_3.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/plugin_test_4.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/plugin_test_6.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/plugin_test_7.sh2
-rw-r--r--binutils-2.25/gold/testsuite/plugin_test_7_1.c2
-rw-r--r--binutils-2.25/gold/testsuite/plugin_test_7_2.c2
-rwxr-xr-xbinutils-2.25/gold/testsuite/plugin_test_tls.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/pr12826.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/pr14265.sh2
-rw-r--r--binutils-2.25/gold/testsuite/protected_1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/protected_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/protected_3.cc2
-rw-r--r--binutils-2.25/gold/testsuite/protected_4.cc2
-rw-r--r--binutils-2.25/gold/testsuite/protected_main_1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/protected_main_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/protected_main_3.cc2
-rw-r--r--binutils-2.25/gold/testsuite/relro_script_test.t2
-rw-r--r--binutils-2.25/gold/testsuite/relro_test.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/relro_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/relro_test_main.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/retain_symbols_file_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/script_test_1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/script_test_1.t2
-rwxr-xr-xbinutils-2.25/gold/testsuite/script_test_10.sh2
-rw-r--r--binutils-2.25/gold/testsuite/script_test_10.t2
-rw-r--r--binutils-2.25/gold/testsuite/script_test_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/script_test_2.t2
-rw-r--r--binutils-2.25/gold/testsuite/script_test_2a.cc2
-rw-r--r--binutils-2.25/gold/testsuite/script_test_2b.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/script_test_3.sh2
-rw-r--r--binutils-2.25/gold/testsuite/script_test_3.t2
-rwxr-xr-xbinutils-2.25/gold/testsuite/script_test_4.sh2
-rw-r--r--binutils-2.25/gold/testsuite/script_test_4.t2
-rw-r--r--binutils-2.25/gold/testsuite/script_test_5.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/script_test_5.sh2
-rw-r--r--binutils-2.25/gold/testsuite/script_test_5.t2
-rwxr-xr-xbinutils-2.25/gold/testsuite/script_test_6.sh2
-rw-r--r--binutils-2.25/gold/testsuite/script_test_6.t2
-rwxr-xr-xbinutils-2.25/gold/testsuite/script_test_7.sh2
-rw-r--r--binutils-2.25/gold/testsuite/script_test_7.t2
-rwxr-xr-xbinutils-2.25/gold/testsuite/script_test_8.sh2
-rw-r--r--binutils-2.25/gold/testsuite/script_test_9.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/script_test_9.sh2
-rw-r--r--binutils-2.25/gold/testsuite/searched_file_test.cc2
-rw-r--r--binutils-2.25/gold/testsuite/searched_file_test_lib.cc2
-rw-r--r--binutils-2.25/gold/testsuite/section_sorting_name.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/section_sorting_name.sh2
-rwxr-xr-xbinutils-2.25/gold/testsuite/split_i386.sh2
-rw-r--r--[-rwxr-xr-x]binutils-2.25/gold/testsuite/split_x32.sh0
-rwxr-xr-xbinutils-2.25/gold/testsuite/split_x86_64.sh2
-rw-r--r--binutils-2.25/gold/testsuite/start_lib_test_1.c2
-rw-r--r--binutils-2.25/gold/testsuite/start_lib_test_2.c2
-rw-r--r--binutils-2.25/gold/testsuite/start_lib_test_3.c2
-rw-r--r--binutils-2.25/gold/testsuite/start_lib_test_main.c2
-rwxr-xr-xbinutils-2.25/gold/testsuite/strong_ref_weak_def.sh2
-rw-r--r--binutils-2.25/gold/testsuite/strong_ref_weak_def_1.c2
-rw-r--r--binutils-2.25/gold/testsuite/strong_ref_weak_def_2.c2
-rw-r--r--binutils-2.25/gold/testsuite/test.cc2
-rw-r--r--binutils-2.25/gold/testsuite/test.h2
-rw-r--r--binutils-2.25/gold/testsuite/testfile.cc2
-rw-r--r--binutils-2.25/gold/testsuite/testfile.h2
-rw-r--r--binutils-2.25/gold/testsuite/testmain.cc2
-rw-r--r--binutils-2.25/gold/testsuite/text_section_grouping.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/text_section_grouping.sh2
-rw-r--r--binutils-2.25/gold/testsuite/thin_archive_main.cc2
-rw-r--r--binutils-2.25/gold/testsuite/thin_archive_test_1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/thin_archive_test_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/thin_archive_test_3.cc2
-rw-r--r--binutils-2.25/gold/testsuite/thin_archive_test_4.cc2
-rw-r--r--binutils-2.25/gold/testsuite/thumb2_branch_range.t2
-rw-r--r--binutils-2.25/gold/testsuite/thumb_branch_range.t2
-rwxr-xr-xbinutils-2.25/gold/testsuite/tls_pie_test.sh58
-rw-r--r--binutils-2.25/gold/testsuite/tls_test.cc2
-rw-r--r--binutils-2.25/gold/testsuite/tls_test.h2
-rw-r--r--binutils-2.25/gold/testsuite/tls_test_c.c2
-rw-r--r--binutils-2.25/gold/testsuite/tls_test_file2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/tls_test_main.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/two_file_shared.sh2
-rw-r--r--binutils-2.25/gold/testsuite/two_file_test.h2
-rw-r--r--binutils-2.25/gold/testsuite/two_file_test_1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/two_file_test_1_v1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/two_file_test_1b.cc2
-rw-r--r--binutils-2.25/gold/testsuite/two_file_test_1b_v1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/two_file_test_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/two_file_test_2_tls.cc2
-rw-r--r--binutils-2.25/gold/testsuite/two_file_test_2_v1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/two_file_test_main.cc2
-rw-r--r--binutils-2.25/gold/testsuite/two_file_test_tls.cc2
-rw-r--r--binutils-2.25/gold/testsuite/undef_symbol.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/undef_symbol.sh2
-rw-r--r--binutils-2.25/gold/testsuite/undef_symbol_main.cc2
-rw-r--r--binutils-2.25/gold/testsuite/ver_matching_def.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/ver_matching_test.sh2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test.h2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test_1.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/ver_test_1.sh2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test_10.script2
-rwxr-xr-xbinutils-2.25/gold/testsuite/ver_test_10.sh2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test_2.script2
-rwxr-xr-xbinutils-2.25/gold/testsuite/ver_test_2.sh2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test_3.cc2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test_4.cc2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test_4.script2
-rwxr-xr-xbinutils-2.25/gold/testsuite/ver_test_4.sh2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test_5.cc2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test_5.script2
-rwxr-xr-xbinutils-2.25/gold/testsuite/ver_test_5.sh2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test_6.c2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test_7.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/ver_test_7.sh2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test_8.script2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test_9.cc2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test_main.cc2
-rw-r--r--binutils-2.25/gold/testsuite/ver_test_main_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/weak_alias_test_1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/weak_alias_test_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/weak_alias_test_3.cc2
-rw-r--r--binutils-2.25/gold/testsuite/weak_alias_test_4.cc2
-rw-r--r--binutils-2.25/gold/testsuite/weak_alias_test_5.cc2
-rw-r--r--binutils-2.25/gold/testsuite/weak_alias_test_main.cc2
-rwxr-xr-xbinutils-2.25/gold/testsuite/weak_plt.sh2
-rw-r--r--binutils-2.25/gold/testsuite/weak_plt_main.cc2
-rw-r--r--binutils-2.25/gold/testsuite/weak_plt_shared.cc2
-rw-r--r--binutils-2.25/gold/testsuite/weak_test.cc2
-rw-r--r--binutils-2.25/gold/testsuite/weak_undef.h2
-rw-r--r--binutils-2.25/gold/testsuite/weak_undef_file1.cc2
-rw-r--r--binutils-2.25/gold/testsuite/weak_undef_file2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/weak_undef_file3.cc2
-rw-r--r--binutils-2.25/gold/testsuite/weak_undef_file4.cc2
-rw-r--r--binutils-2.25/gold/testsuite/weak_undef_test.cc2
-rw-r--r--binutils-2.25/gold/testsuite/weak_undef_test_2.cc2
-rw-r--r--binutils-2.25/gold/testsuite/weak_unresolved_symbols_test.cc45
-rw-r--r--binutils-2.25/gold/tilegx.cc2
-rw-r--r--binutils-2.25/gold/timer.cc2
-rw-r--r--binutils-2.25/gold/timer.h2
-rw-r--r--binutils-2.25/gold/tls.h2
-rw-r--r--binutils-2.25/gold/token.h2
-rw-r--r--binutils-2.25/gold/version.cc2
-rw-r--r--binutils-2.25/gold/workqueue-internal.h2
-rw-r--r--binutils-2.25/gold/workqueue-threads.cc2
-rw-r--r--binutils-2.25/gold/workqueue.cc2
-rw-r--r--binutils-2.25/gold/workqueue.h2
-rw-r--r--binutils-2.25/gold/x86_64.cc8
-rw-r--r--binutils-2.25/gold/yyscript.y45
-rw-r--r--binutils-2.25/gprof/.gitignore8
-rw-r--r--binutils-2.25/gprof/ChangeLog2
-rw-r--r--binutils-2.25/gprof/Makefile.am2
-rw-r--r--binutils-2.25/gprof/Makefile.in4
-rwxr-xr-xbinutils-2.25/gprof/configure20
-rw-r--r--binutils-2.25/include/ChangeLog9
-rw-r--r--binutils-2.25/include/bfdlink.h3
-rw-r--r--binutils-2.25/include/dwarf2.def2
-rw-r--r--binutils-2.25/include/dwarf2.h24
-rw-r--r--binutils-2.25/include/elf/ChangeLog12
-rw-r--r--binutils-2.25/include/elf/arm.h17
-rwxr-xr-x[-rw-r--r--]binutils-2.25/include/elf/epiphany.h0
-rw-r--r--binutils-2.25/include/elf/mips.h1
-rw-r--r--binutils-2.25/include/elf/sparc.h2
-rw-r--r--binutils-2.25/include/elf/x86-64.h3
-rw-r--r--binutils-2.25/include/opcode/ChangeLog59
-rwxr-xr-x[-rw-r--r--]binutils-2.25/include/opcode/bfin.h0
-rw-r--r--binutils-2.25/include/opcode/mips.h5
-rw-r--r--binutils-2.25/include/opcode/nios2.h421
-rw-r--r--binutils-2.25/include/opcode/nios2r1.h474
-rw-r--r--binutils-2.25/include/opcode/sparc.h2
-rwxr-xr-xbinutils-2.25/install-sh385
-rw-r--r--binutils-2.25/ld/.gitignore16
-rw-r--r--binutils-2.25/ld/ChangeLog60
-rw-r--r--binutils-2.25/ld/Makefile.am2
-rw-r--r--binutils-2.25/ld/Makefile.in4
-rw-r--r--binutils-2.25/ld/config.in3
-rwxr-xr-xbinutils-2.25/ld/configure40
-rw-r--r--binutils-2.25/ld/configure.ac10
-rwxr-xr-x[-rw-r--r--]binutils-2.25/ld/emulparams/aarch64elf32.sh0
-rwxr-xr-x[-rw-r--r--]binutils-2.25/ld/emulparams/aarch64elf32b.sh0
-rwxr-xr-x[-rw-r--r--]binutils-2.25/ld/emulparams/aarch64linux32.sh0
-rwxr-xr-x[-rw-r--r--]binutils-2.25/ld/emulparams/aarch64linux32b.sh0
-rwxr-xr-x[-rw-r--r--]binutils-2.25/ld/emulparams/elf32lppclinux.sh0
-rw-r--r--binutils-2.25/ld/emulparams/elf_x86_64.sh5
-rwxr-xr-x[-rw-r--r--]binutils-2.25/ld/emulparams/nios2linux.sh0
-rw-r--r--binutils-2.25/ld/emultempl/elf32.em15
-rw-r--r--binutils-2.25/ld/emultempl/lnk960.em66
-rw-r--r--binutils-2.25/ld/emultempl/spu_icache.o_c50
-rw-r--r--binutils-2.25/ld/emultempl/spu_ovl.o_c44
-rw-r--r--binutils-2.25/ld/ld.h7
-rw-r--r--binutils-2.25/ld/ld.texinfo21
-rw-r--r--binutils-2.25/ld/ldexp.c8
-rw-r--r--binutils-2.25/ld/ldfile.c20
-rw-r--r--binutils-2.25/ld/ldlang.c187
-rw-r--r--binutils-2.25/ld/ldlang.h8
-rw-r--r--binutils-2.25/ld/ldlex.h3
-rw-r--r--binutils-2.25/ld/ldmain.c7
-rw-r--r--binutils-2.25/ld/lexsup.c24
-rw-r--r--binutils-2.25/ld/scripttempl/avrtiny.sc60
-rw-r--r--binutils-2.25/ld/scripttempl/elf.sc3
-rw-r--r--binutils-2.25/ld/testsuite/ChangeLog82
-rw-r--r--binutils-2.25/ld/testsuite/ld-arm/attr-merge-2.attr1
-rw-r--r--binutils-2.25/ld/testsuite/ld-arm/attr-merge-2a.s1
-rw-r--r--binutils-2.25/ld/testsuite/ld-arm/attr-merge-2b.s1
-rw-r--r--binutils-2.25/ld/testsuite/ld-arm/attr-merge-4.attr2
-rw-r--r--binutils-2.25/ld/testsuite/ld-arm/attr-merge-4a.s3
-rw-r--r--binutils-2.25/ld/testsuite/ld-arm/attr-merge-4b.s3
-rw-r--r--binutils-2.25/ld/testsuite/ld-arm/attr-merge-6.attr1
-rw-r--r--binutils-2.25/ld/testsuite/ld-arm/attr-merge-6a.s2
-rw-r--r--binutils-2.25/ld/testsuite/ld-arm/attr-merge-6b.s2
-rw-r--r--binutils-2.25/ld/testsuite/ld-avr/relax-02.d64
-rw-r--r--binutils-2.25/ld/testsuite/ld-avr/relax-02.s65
-rw-r--r--binutils-2.25/ld/testsuite/ld-avr/relax-03.d26
-rw-r--r--binutils-2.25/ld/testsuite/ld-avr/relax-03.s18
-rwxr-xr-x[-rw-r--r--]binutils-2.25/ld/testsuite/ld-pe/longsecn-1.d0
-rwxr-xr-x[-rw-r--r--]binutils-2.25/ld/testsuite/ld-pe/longsecn-2.d0
-rwxr-xr-x[-rw-r--r--]binutils-2.25/ld/testsuite/ld-pe/longsecn-3.d0
-rwxr-xr-x[-rw-r--r--]binutils-2.25/ld/testsuite/ld-pe/longsecn-4.d0
-rwxr-xr-x[-rw-r--r--]binutils-2.25/ld/testsuite/ld-pe/longsecn-5.d0
-rwxr-xr-x[-rw-r--r--]binutils-2.25/ld/testsuite/ld-pe/longsecn.d0
-rwxr-xr-x[-rw-r--r--]binutils-2.25/ld/testsuite/ld-pe/non-c-lang-syms.s0
-rwxr-xr-x[-rw-r--r--]binutils-2.25/ld/testsuite/ld-pe/pe-compile.exp0
-rwxr-xr-x[-rw-r--r--]binutils-2.25/ld/testsuite/ld-pe/pe-run.exp0
-rw-r--r--binutils-2.25/ld/testsuite/ld-unique/unique.exp2
-rw-r--r--binutils-2.25/ld/testsuite/ld-unique/unique.s2
-rw-r--r--binutils-2.25/ld/testsuite/ld-unique/unique_shared.s2
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/bnd-ifunc-1.d2
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/bnd-ifunc-2.d2
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/bnd-plt-1.d18
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/gotplt1.d6
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/gotplt1.s5
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/mpx.exp15
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/mpx1a.rd2
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/mpx1c.rd2
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/mpx2a.rd2
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/mpx2c.rd2
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/mpx3.dd35
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/mpx3a.s16
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/mpx3b.s11
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/mpx4.dd24
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/mpx4a.s6
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/mpx4b.s5
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/start.obin0 -> 824 bytes
-rw-r--r--binutils-2.25/ld/testsuite/ld-x86-64/x86-64.exp1
-rw-r--r--binutils-2.25/ld/testsuite/lib/ld-lib.exp9
-rw-r--r--binutils-2.25/libiberty/.gitignore2
-rw-r--r--binutils-2.25/libiberty/ChangeLog54
-rw-r--r--binutils-2.25/libiberty/ChangeLog.jit23
-rw-r--r--binutils-2.25/libiberty/Makefile.in46
-rw-r--r--binutils-2.25/libiberty/choose-temp.c1
-rw-r--r--binutils-2.25/libiberty/config.in31
-rwxr-xr-xbinutils-2.25/libiberty/configure122
-rw-r--r--binutils-2.25/libiberty/configure.ac14
-rw-r--r--binutils-2.25/libiberty/d-demangle.c10
-rw-r--r--binutils-2.25/libiberty/filename_cmp.c29
-rw-r--r--binutils-2.25/libiberty/functions.texi49
-rw-r--r--binutils-2.25/libiberty/make-temp-file.c4
-rw-r--r--binutils-2.25/libiberty/sigsetmask.c1
-rw-r--r--binutils-2.25/libiberty/strtoll.c175
-rw-r--r--binutils-2.25/libiberty/strtoull.c122
-rw-r--r--binutils-2.25/libiberty/testsuite/Makefile.in12
-rw-r--r--binutils-2.25/libiberty/testsuite/test-strtol.c185
-rwxr-xr-xbinutils-2.25/missing461
-rwxr-xr-xbinutils-2.25/mkinstalldirs4
-rwxr-xr-xbinutils-2.25/move-if-change6
-rw-r--r--binutils-2.25/opcodes/.gitignore2
-rw-r--r--binutils-2.25/opcodes/ChangeLog65
-rw-r--r--binutils-2.25/opcodes/Makefile.in2
-rwxr-xr-xbinutils-2.25/opcodes/configure20
-rw-r--r--binutils-2.25/opcodes/mips-dis.c5
-rw-r--r--binutils-2.25/opcodes/mips-opc.c13
-rw-r--r--binutils-2.25/opcodes/nios2-dis.c308
-rw-r--r--binutils-2.25/opcodes/nios2-opc.c706
-rw-r--r--binutils-2.25/opcodes/sparc-opc.c50
-rwxr-xr-xbinutils-2.25/ylwrap202
639 files changed, 16353 insertions, 11703 deletions
diff --git a/binutils-2.25/ChangeLog b/binutils-2.25/ChangeLog
index 32b3c15..473702b 100644
--- a/binutils-2.25/ChangeLog
+++ b/binutils-2.25/ChangeLog
@@ -1,3 +1,21 @@
+2014-11-16 Jan-Benedict Glaw <jbglaw@lug-owl.de>
+
+ * config.guess: Update from upstream config repo.
+ * config.sub: Ditto.
+
+2014-11-16 Jan-Benedict Glaw <jbglaw@lug-owl.de>
+
+ * move-if-change: Update from upstream gnulib.
+
+2014-11-16 Jan-Benedict Glaw <jbglaw@lug-owl.de>
+
+ * compile: Sync with upstream Automake.
+ * depcomp: Ditto.
+ * install-sh: Ditto.
+ * missing: Ditto.
+ * mkinstalldirs: Ditto.
+ * ylwrap: Ditto.
+
2014-10-15 Tristan Gingold <gingold@adacore.com>
* src-release.sh (do_proto_toplev): Configure with --target.
diff --git a/binutils-2.25/MAINTAINERS b/binutils-2.25/MAINTAINERS
index dd8601b..b09fbc0 100644
--- a/binutils-2.25/MAINTAINERS
+++ b/binutils-2.25/MAINTAINERS
@@ -47,7 +47,10 @@ gdb/; readline/; sim/; GDB's part of include/
See also gdb/MAINTAINERS and sim/MAINTAINERS.
include/
- See binutils/, gdb/, sid/, gcc/, libiberty/ etc.
+ The rule is that if the file exists in the gcc tree
+ then gcc owns it. Thus you have to look at the gcc tree
+ to know whether any particular file is owned by gcc.
+ See also binutils/, gdb/, sid/, gcc/, libiberty/ etc.
intl/; config.rhost; libiberty/; libiberty's part of include/;
compile; depcomp; install-sh; missing; ylwrap; config/
diff --git a/binutils-2.25/README.google b/binutils-2.25/README.google
new file mode 100644
index 0000000..a7bf0dc
--- /dev/null
+++ b/binutils-2.25/README.google
@@ -0,0 +1,270 @@
+Patches applied to binutils-20141117:
+
+Please include a change to this file with each patch, *and* each
+subsequent modification of the patch. Do NOT combine patch
+checkins, keep them separate.
+
+Append new entries to the end of this file. Each entry shall include:
+ * The list of files modified by the patch,
+ * The status of the patch (whether it's been checked in upstream,
+ or is a local patch),
+ * The local 'owner' responsible for the patch, and
+ * A description of the patch (preferably including bug numbers).
+
+Please include entries for both local patches and for patches which
+have been checked in to (or back-ported from) the upstream sources.
+When checking in changes made upstream, add an entry to this file but
+DO NOT add entries to the GNU ChangeLog files.
+
+gas/as.c
+gas/as.h
+gas/doc/as.texinfo
+gas/read.c
+gas/testsuite/gas/all/incbin.d
+ Status: google local
+ Owner: aaw
+ Disable .incbin, unless explicitly enabled with new flag --allow-incbin.
+
+binutils/doc/Makefile.am
+binutils/doc/Makefile.in
+gas/doc/Makefile.am
+gas/doc/Makefile.in
+gprof/Makefile.am
+gprof/Makefile.in
+ld/Makefile.am
+ld/Makefile.in
+ Status: local
+ Owner: bmoses
+ Pass --date=" " to pod2man to avoid including build dates when formatting
+ manual and info pages.
+
+gas/testsuite/gas/aarch64/mapmisc.d
+ Status: local
+ Owner: bmoses
+ Add "--allow-incbin" directive to avoid errors with .incbin patch.
+
+gold/configure.ac
+gold/configure
+gold/Makefile.am
+gold/Makefile.in
+gold/testsuite/Makefile.am
+gold/testsuite/Makefile.in
+ Status: local
+ Owner: bmoses
+ Add a Gold configure option to run tests using the native
+ build tools, even if we are building for a non-native
+ target.
+
+gold/errors.cc
+ Status: local
+ Owner: ccoutant
+ Add local go/keymethod link to missing vtable error message.
+
+gold/options.h
+ Status: local
+ Owner: ccoutant
+ Make --disable-new-dtags the default. See b/12844098.
+
+gold/layout.cc
+ Status: Local
+ Owner: tmsriram
+ Integrated from binutils-2.24.
+ Map input section name prefixes "_function_patch_prologue." and
+ "_function_patch_epilogue." to output section names
+ "_function_patch_prologue" and "_function_patch_epilogue".
+ The compiler patch that creates these sections:
+ http://gcc.gnu.org/ml/gcc-patches/2013-04/msg01835.html
+
+gold/powerpc.cc
+bfd/elf64-ppc.c
+ Status: backport
+ Owner: shenhan
+ Backport upstream patches to fix overflow detection for PPC.
+ See cl/80502043.
+
+gold/powerpc.cc
+ Status: backport
+ Owner: shenhan
+ Backport upstream patch for PowerPC relaxation corner case.
+ See https://sourceware.org/ml/binutils/2014-11/msg00340.html.
+
+gold/aarch64.cc
+ Status: backport
+ Owner: shenhan
+ Backport upstream patch for tlsdesc linking error under -pie.
+ See https://sourceware.org/ml/binutils/2014-11/msg00343.html.
+
+gold/powerpc.cc
+ Status: backport
+ Owner: jingyu
+ Backport 2 upstream patches to retry powerpc gold stub grouping when
+ groups prove too large.
+ See https://sourceware.org/ml/binutils/2014-11/msg00342.html
+ and https://sourceware.org/ml/binutils/2014-12/msg00054.html
+
+gold/aarch64.cc
+ Status: backport
+ Owner: jingyu
+ Backport upstream patch to print informative error message for
+ stub-group-size.
+ See https://sourceware.org/ml/binutils/2014-12/msg00108.html
+
+gold/aarch64.cc
+ Status: backport
+ Owner: jingyu
+ Backport upstream patch to fix a print bug in 32bit mode.
+ See https://sourceware.org/ml/binutils/2014-12/msg00137.html
+
+bfd/elf64-ppc.c
+gold/powerpc.cc
+gold/symtab.cc
+ Status: backport
+ Owner: jingyu
+ Backport 5 upstream patches for PPC.
+ See https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=f9dffbf0863b9010a5eece87bd6b36e38c09ffb0
+ https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=1f98a0748c4dfae57a76c408501c938480c1173c
+ https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=1611bc4afb0f08f0aff64ec355b8d68e9f4f0a73
+ https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=e30880c2eeee3b43897161344bbbffd03f3a1c91
+ https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=b01a4b043a5b08e1208b1fedd61a6f3d65a328e0
+
+gold/powerpc.cc
+ Status: backport
+ Owner: jingyu
+ Backport upstream patch to correct PPC TLSLD linker optimization.
+ See https://sourceware.org/ml/binutils/2015-01/msg00322.html
+
+gold/aarch64-reloc.def
+gold/aarch64.cc
+ Status: backport
+ Owner: jingyu
+ Backport upstream patch to support missing TLSLE relocations.
+ see https://sourceware.org/ml/binutils/2015-02/msg00140.html
+
+gold/parameters.cc
+ Status: backport
+ Owner: ccoutant
+ Fix a race condition when setting default target for ARM targets.
+ https://sourceware.org/ml/binutils-cvs/2015-03/msg00023.html
+
+binutils/dwarf.h
+binutils/readelf.c
+include/dwarf2.def
+include/dwarf2.h
+ Status: local
+ Owner: ccoutant
+ Backport two-level line table support for readelf from upstream binutils
+ branch users/ccoutant/two-level-line-150331.
+
+gas/dwarf2dbg.c
+gas/dwarf2dbg.h
+gas/config/obj-elf.c
+ Status: local
+ Owner: ccoutant
+ Backport two-level line table support for GAS from upstream binutils
+ branch users/ccoutant/two-level-line-150331.
+
+elfcpp/dwarf.h
+gold/debug.h
+gold/dwarf_reader.cc
+gold/dwarf_reader.h
+ Status: local
+ Owner: ccoutant
+ Backport two-level line table support for gold from upstream binutils
+ branch users/ccoutant/two-level-line-150331.
+
+gold/dwp.cc
+gold/dynobj.cc
+gold/object.cc
+gold/object.h
+ Status: backport
+ Owner: ccoutant
+ Backport upstream patch to add gold support for reading compressed
+ debug info in shared object and dwp files.
+
+gold/aarch64-reloc.def
+gold/aarch64.cc
+ Status: backport
+ Owner: jingyu
+ Add support to 2 AARCH64 TLSLD relocations. Change _TLS_MODULE_BASE_.
+ https://sourceware.org/ml/binutils/2015-03/msg00420.html
+
+gold/ehframe.h
+gold/gold.cc
+gold/layout.cc
+gold/layout.h
+gold/options.cc
+gold/testsuite/Makefile.am
+gold/testsuite/Makefile.in
+ Status: backport
+ Owner: ccoutant
+ Fix gold testsuite failures when using newer versions of GCC.
+ https://sourceware.org/ml/binutils-cvs/2015-03/msg00048.html
+ https://sourceware.org/ml/binutils-cvs/2015-03/msg00075.html
+ https://sourceware.org/ml/binutils-cvs/2015-03/msg00146.html
+
+gold/aarch.cc
+ Status: backport
+ Owner: jingyu
+ Fix virtual function signature to match the one in the parent class.
+ https://sourceware.org/ml/binutils/2015-04/msg00045.html
+
+gold/debug.h
+gold/dwarf_reader.cc
+gold/symtab.cc
+gold/testsuite/debug_msg.sh
+ Status: backport
+ Owner: ccoutant
+ Improve ODR checking in gold, to tolerate slight differences in
+ line numbers between clang and gcc.
+ https://sourceware.org/ml/binutils-cvs/2015-04/msg00095.html
+
+gold/layout.cc
+gold/target.h
+gold/x86_64.cc
+ Status: local
+ Owner: tmsriram
+ With PIE links, check the size of the data segment and warn when it is
+ greater than a safe value (128MB for x86_64) to prevent the problem described
+ in go/unsafe-pie.
+
+gold/options.h
+gold/symtab.cc
+gold/symtab.h
+gold/testsuite/Makefile.am
+gold/testsuite/Makefile.in
+gold/testsuite/weak_unresolved_symbols_test.cc
+ Status: backport
+ Owner: tmsriram
+ Backport upstream patch that adds option --warn-unresolved-symbols to gold
+ that treats unresolved symbol references as weak. Details here:
+ https://sourceware.org/ml/binutils/2015-04/msg00358.html
+
+gold/gold.cc
+gold/options.h
+gold/testsuite/Makefile.am
+gold/testsuite/Makefile.in
+gold/testsuite/disable_pie_unsafe_size_test.cc
+gold/testsuite/disable_pie_unsafe_size_test.sh
+ Status: local
+ Owner: tmsriram
+ With PIE links, check the size of the data segment and disable PIE when it
+ is greater than a safe value (128MB for x86_64) to prevent the problem described
+ in go/unsafe-pie. Allow this to be overridden with
+ --no-disable-pie-when-unsafe-data-size
+
+gold/powerpc.cc
+ Status: backport
+ Owner: saugustine
+ Backport upstream patches that disable assertion when building powerpc symbol
+ tables.
+ https://sourceware.org/ml/binutils/2015-04/msg00428.html
+ https://sourceware.org/ml/binutils/2015-04/msg00429.html
+
+gold/symtab.cc
+gold/testsuite/Makefile.am
+gold/testsuite/tls_pie_test.sh
+ Status: backport
+ Owner: tmsriram
+ Backport upstream patch that allows gold to resolve defined TLS symbols in a
+ PIE link.
+ https://sourceware.org/ml/binutils-cvs/2015-04/msg00098.html
diff --git a/binutils-2.25/bfd/.gitignore b/binutils-2.25/bfd/.gitignore
new file mode 100644
index 0000000..3316133
--- /dev/null
+++ b/binutils-2.25/bfd/.gitignore
@@ -0,0 +1,40 @@
+/bfd-in3.h
+/bfd.h
+/bfd_stdint.h
+/bfdver.h
+/elf32-ia64.c
+/elf32-target.h
+/elf64-ia64.c
+/elf64-target.h
+/libtool-soversion
+/ofiles
+/peigen.c
+/pepigen.c
+/pex64igen.c
+/stmp-bfd-h
+/targmatch.h
+
+/doc/aoutx.texi
+/doc/archive.texi
+/doc/archures.texi
+/doc/bfdio.texi
+/doc/bfdt.texi
+/doc/bfdver.texi
+/doc/bfdwin.texi
+/doc/cache.texi
+/doc/chew
+/doc/coffcode.texi
+/doc/core.texi
+/doc/elf.texi
+/doc/elfcode.texi
+/doc/format.texi
+/doc/hash.texi
+/doc/init.texi
+/doc/libbfd.texi
+/doc/linker.texi
+/doc/mmo.texi
+/doc/opncls.texi
+/doc/reloc.texi
+/doc/section.texi
+/doc/syms.texi
+/doc/targets.texi
diff --git a/binutils-2.25/bfd/ChangeLog b/binutils-2.25/bfd/ChangeLog
index c66bb1a..f124354 100644
--- a/binutils-2.25/bfd/ChangeLog
+++ b/binutils-2.25/bfd/ChangeLog
@@ -1,51 +1,185 @@
+2014-12-25 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * elf32-arm.c (elf32_arm_merge_eabi_attributes): Handle new
+ Tag_ABI_VFP_args value and replace hardcoded values by enum values.
+ (elf32_arm_post_process_headers): Set e_flags in ELF header as hard
+ float only when Tag_ABI_VFP_args is 1, using new enum value
+ AEABI_VFP_args_vfp to check that.
+
2015-07-23 Joseph Myers <joseph@codesourcery.com>
* elfxx-mips.c (_bfd_mips_elf_finish_dynamic_sections)
<DT_MIPS_RLD_MAP_REL>: Add target address to host address
difference, not to host pointer.
- 2015-02-24 Nick Clifton <nickc@redhat.com>
+2015-04-01 Tejas Belagod <tejas.belagod@arm.com>
+ Marcus Shawcroft <marcus.shawcroft@arm.com>
+ Jiong Wang <jiong.wang@arm.com>
- * configure.ac (AC_CHECK_HEADERS): Add wctype.h.
- * configure: Regenerate.
- * config.in: Regenerate.
- * peXXigen.c: Include wctype.h if HAVE_WCTYPE_H is defined.
- (u16_mbtowc): Use wint_t types if HAVE_WCTYPE_H is defined.
- (rsrc_cmp): Use towlower instead of wcsncasecmp if HAVE_WCTYPE_H
- is defined.
+ * bfd-in.h (bfd_elf64_aarch64_set_options)
+ (bfd_elf32_aarch64_set_options): Add parameter.
+ * bfd-in2.h: Regenerated.
+ * elfnn-aarch64.c (aarch64_erratum_843419_stub)
+ (_bfd_aarch64_adrp_p, _bfd_aarch64_erratum_843419_sequence_p)
+ (_bfd_aarch64_erratum_843419_stub_name)
+ (_bfd_aarch64_erratum_843419_fixup)
+ (_bfd_aarch64_erratum_843419_scan)
+ (_bfd_aarch64_erratum_843419_branch_to_stub)
+ (_bfd_aarch64_erratum_843419_p): Define.
+ (enum elf_aarch64_stub_type): Define
+ aarch64_stub_erratum_843419_veneer.
+ (struct elf_aarch64_stub_hash_entry): Define adrp_offset.
+ (struct elf_aarch64_link_hash_table): Define fix_erratum_843419
+ and fix_erratum_843419_adr.
+ (stub_hash_newfunc): Initialize adrp_offset;
+ (_bfd_aarch64_add_stub_entry_after): Define.
+ (aarch64_map_one_stub, aarch64_build_one_stub)
+ (aarch64_size_one_stub): Handle
+ aarch64_stub_erratum_843419_veneer.
+ (_bfd_aarch64_resize_stubs): Round stub section size.
+ (elfNN_aarch64_size_stubs): Add scan for 843419.
+ (bfd_elfNN_aarch64_set_options): Add parameter. Initialize
+ fix_erratum_843419 and fix_erratum_843419_adr.
+ (struct erratum_835769_branch_to_stub_data): Add info.
+ (elfNN_aarch64_write_section): Initialise info. Handle 843419.
+ (elfNN_aarch64_size_dynamic_sections): Handle 843419.
+ * elfxx-aarch64.c (_bfd_aarch64_decode_adrp_imm)
+ (_bfd_aarch64_sign_extend): Define.
+ (reencode_adr_imm): Remove static. Rename to:
+ (_bfd_aarch64_reencode_adr_imm): Define.
+ (_bfd_aarch64_elf_put_addend): Call _bfd_aarch64_reencode_adr_imm.
+ * elfxx-aarch64.h (AARCH64_ADR_OP, AARCH64_ADRP_OP)
+ (AARCH64_ADRP_OP_MASK, _bfd_aarch64_sign_extend)
+ (_bfd_aarch64_decode_adrp_imm, _bfd_aarch64_reencode_adr_imm):
+ Define.
+
+2015-03-25 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * elfnn-aarch64.c (_bfd_aarch64_resize_stubs): Adjust stub section
+ size for initial branch.
+ (elfNN_aarch64_build_stubs): Write initial branch.
+ _bfd_aarch64_decode_(elfNN_aarch64_output_arch_local_syms): Write
+ mapping symbol on initial branch.
+
+2015-03-25 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * elfnn-aarch64.c (_bfd_aarch64_erratum_835769_scan):
+ Update erratum count.
+
+2015-03-24 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Factor
+ code into:
+ (_bfd_aarch64_get_stub_for_link_section): Define.
+
+2015-03-24 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Adjust
+ update of section_group[].stub_sec.
+
+2015-03-24 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * elfnn-aarch64.c (struct aarch64_erratum_835769_fix) Remove.
+ (erratum_835769_scan) Drop fix_table_size_p and fixes_p arguments.
+ Delete fixes, fix_table_size and associated code. Call
+ _bfd_aarch64_add_stub_entry_in_group. Rename to...
+ (bfd_aarch64_erratum_835769_scan): Define.
+ (elfNN_aarch64_size_stubs): Delete erratum_835769_fixes,
+ erratum_835769_fix_table_size, i and associated code. Relocate
+ call to _bfd_aarch64_erratum_835769_scan. Delete adhoc stub size
+ correction. Delete construction of stub entry from
+ erratum_835769_fixes array.
+
+2015-03-24 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * elfnn-aarch64.c (elfNN_aarch64_size_stubs): Use
+ _bfd_aarch64_add_stub_entry_in_group.
+
+2015-03-23 Keith Seitz <keiths@redhat.com>
+
+ * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Add
+ missing ';'.
+
+2015-03-23 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * elfnn-aarch64.c (elfNN_aarch64_size_stubs): Factor out
+ stub resize code into...
+ (bfd_aarch64_resize_stubs): Define.
+
+2015-03-23 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Factor stub
+ creation code into...
+ (bfd_aarch64_create_stub_section): Define.
+
+2015-03-23 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Rename
+ from elf_aarch64_create_or_find_stub_sec.
+ (_bfd_aarch64_add_stub_entry_in_group): Rename from
+ elfNN_aarch64_add_stub. Call
+ _bfd_aarch64_create_or_find_stub_sec.
+ (elfNN_aarch64_size_stubs, elfNN_aarch64_size_stubs): Call
+ _bfd_aarch64_add_stub_entry_in_group.
+
+2015-03-23 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * elfnn-aarch64.c (erratum_835769_scan) Add comment. Reverse
+ sense of boolean return.
+ (elfNN_aarch64_size_stubs): Adjust for above.
+
+2015-03-23 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * elfnn-aarch64.c (elf_aarch64_create_or_find_stub_sec):
+ Remove unused parameter.
+ (elfNN_aarch64_size_stubs): Adjust for above.
+
+2015-03-23 Marcus Shawcroft <marcus.shawcroft@arm.com>
-2014-11-18 Igor Zamyatin <igor.zamyatin@intel.com>
+ * elfnn-aarch64.c (elfNN_aarch64_size_stubs): Remove bfd_indx.
- * elf64-x86-64.c (elf_x86_64_check_relocs): Enable MPX PLT only
- for -z bndplt.
+2015-03-23 Marcus Shawcroft <marcus.shawcroft@arm.com>
-2014-11-17 Nick Clifton <nickc@redhat.com>
+ * elfnn-aarch64.c (aarch64_erratum_835769_fixes)
+ (num_aarch64_erratum_835769_fixes): Remove.
+ (elfNN_aarch64_size_stubs): Remove assignments to above.
- Apply trunk patches:
+2015-03-04 Marcus Shawcroft <marcus.shawcroft@arm.com>
- 2014-11-14 Nick Clifton <nickc@redhat.com>
+ * elfxx-aarch64.c (decode_add_imm, decode_movw_imm)
+ (decode_tst_branch_ofs_14, decode_ld_lit_ofs_19)
+ (decode_cond_branch_ofs_19, decode_branch_ofs_26): Remove.
+
+2014-11-14 Nick Clifton <nickc@redhat.com>
PR binutils/17597
* opncls.c (bfd_get_debug_link_info): Avoid reading off the end of
the section.
(bfd_get_alt_debug_link_info): Likewise.
- 2014-11-14 Nick Clifton <nickc@redhat.com>
+2014-11-14 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* ieee.c (ieee_archive_p) Skip processing if no bytes are read at
all.
(ieee_object_p): Likewise.
- 2014-11-13 H.J. Lu <hongjiu.lu@intel.com>
+2014-11-13 H.J. Lu <hongjiu.lu@intel.com>
* coffcode.h (coff_slurp_line_table): Add cast to unsigned int.
- 2014-11-13 H.J. Lu <hongjiu.lu@intel.com>
+2014-11-13 H.J. Lu <hongjiu.lu@intel.com>
* coffcode.h (coff_pointerize_aux_hook): Fix a typo.
- 2014-11-13 Nick Clifton <nickc@redhat.com>
+2014-11-13 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gas/17598
+ * elf64-x86-64.c (elf_x86_64_check_relocs): Treat
+ R_X86_64_GOTPLT64 the same as R_X86_64_GOT64.
+ (elf_x86_64_relocate_section): Likewise.
+
+2014-11-13 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* coffcode.h (coff_ptr_struct): Add is_sym field.
@@ -79,7 +213,7 @@
* libcoff.h: Regenerate.
* libcoff-in.h: Regenerate.
- 2014-11-12 Nick Clifton <nickc@redhat.com>
+2014-11-12 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* coffcode.h (coff_slurp_line_table): Set the line number of
@@ -92,13 +226,13 @@
* peXXigen.c (pe_print_idata): Add range checking displaying
member names.
- 2014-11-12 Alan Modra <amodra@gmail.com>
+2014-11-12 Alan Modra <amodra@gmail.com>
PR binutils/17512
* coffcode.h (coff_slurp_line_table): Drop line number info
not preceded by a valid function entry. Revert last change.
- 2014-11-11 Nick Clifton <nickc@redhat.com>
+2014-11-11 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* coffcode.h (coff_slurp_line_table): Initialise the parts of the
@@ -117,13 +251,13 @@
structure are initialised.
(pe_print_edata): Avoid reading off the end of the data buffer.
- 2014-11-11 Alan Modra <amodra@gmail.com>
+2014-11-11 Alan Modra <amodra@gmail.com>
PR binutils/17512
* coffcode.h (coff_slurp_line_table): Use updated lineno_count
when building func_table.
- 2014-11-11 Alan Modra <amodra@gmail.com>
+2014-11-11 Alan Modra <amodra@gmail.com>
PR binutils/17512
* coffcode.h (coff_slurp_line_table): Don't bfd_zalloc, just
@@ -135,7 +269,17 @@
copied, and free n_lineno_cache.
* pe-mips.c (NUM_HOWTOS): Typo fix.
- 2014-11-10 Nick Clifton <nickc@redhat.com>
+2014-11-11 Alan Modra <amodra@gmail.com>
+
+ * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Adjust section
+ size check to account for possible zero terminator.
+
+2014-11-10 James Cowgill <James.Cowgill@imgtec.com>
+
+ * elfxx-mips.c (_bfd_mips_elf_section_processing): don't force small
+ data sections to be PROGBITS
+
+2014-11-10 Nick Clifton <nickc@redhat.com>
PR binutils/17521
* coff-i386.c (NUM_HOWTOS): New define.
@@ -172,20 +316,26 @@
(pe_bfd_object_p): Allocate and initialize enough space to hold a
PEAOUTHDR, even if the opt_hdr field specified less.
- 2014-11-08 Alan Modra <amodra@gmail.com>
+2014-11-08 Alan Modra <amodra@gmail.com>
* peXXigen.c (pe_print_idata): Revert last patch, cast lhs instead.
- 2014-11-07 H.J. Lu <hongjiu.lu@intel.com>
+2014-11-07 H.J. Lu <hongjiu.lu@intel.com>
* peXXigen.c (pe_print_idata): Cast to unsigned long in range
checks.
- 2014-11-07 Alan Modra <amodra@gmail.com>
+2014-11-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/17482
+ * elf64-x86-64.c (elf_x86_64_relocate_section): Update comments
+ for IE->LE transition.
+
+2014-11-07 Alan Modra <amodra@gmail.com>
* tekhex.c (tekhex_set_arch_mach): Ignore unknown arch errors.
- 2014-11-07 Alan Modra <amodra@gmail.com>
+2014-11-07 Alan Modra <amodra@gmail.com>
* tekhex.c (CHUNK_SPAN): Define.
(struct data_struct <chunk_init>): Use one byte per span, update
@@ -201,11 +351,11 @@
(tekhex_set_section_contents): Don't create initial chunks.
(tekhex_write_object_contents): Use CHUNK_SPAN.
- 2014-11-07 Alan Modra <amodra@gmail.com>
+2014-11-07 Alan Modra <amodra@gmail.com>
* aoutx.h (aout_get_external_symbols): Tidy allocation of symbol buffer.
- 2014-11-07 Alan Modra <amodra@gmail.com>
+2014-11-07 Alan Modra <amodra@gmail.com>
* archive.c (_bfd_slurp_extended_name_table): Revert bfd_get_size check.
* coffcode.h (coff_set_alignment_hook): Likewise.
@@ -215,7 +365,7 @@
* elf.c (bfd_elf_get_str_section): Likewise.
* tekhex.c (first_phase): Likewise.
- 2014-11-06 Nick Clifton <nickc@redhat.com>
+2014-11-06 Nick Clifton <nickc@redhat.com>
* aoutx.h (slurp_symbol_table): Revert previous delta.
(slurp_reloc_table): Likewise.
@@ -224,7 +374,12 @@
* coffgen.c (coff_get_normalized_symtab): Allow zero-sized symtabs
and do not complain about linker generated files.
- 2014-11-04 Nick Clifton <nickc@redhat.com>
+2014-11-06 Will Newton <will.newton@linaro.org>
+
+ * elf-attrs.c (_bfd_elf_parse_attributes): Handle zero
+ length sections and sub-sections.
+
+2014-11-04 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* coffcode.h (handle_COMDAT): Replace abort with BFD_ASSERT.
@@ -232,7 +387,17 @@
(coff_slurp_line_table): Add more range checking.
* peXXigen.c (pe_print_debugdata): Add range checking.
- 2014-11-05 Nick Clifton <nickc@redhat.com>
+2014-11-05 James Cowgill <james.cowgill@imgtec.com>
+
+ * elfxx-mips.c (_bfd_mips_elf_finish_dynamic_sections): Fix segfault
+ when creating a dso with discarded dynsym section.
+
+2014-11-05 Matthew Fortune <matthew.fortune@imgtec.com>
+
+ * elfxx-mips.c (update_mips_abiflags_isa): Add E_MIPS_ARCH_32R6
+ and E_MIPS_ARCH_64R6 support.
+
+2014-11-05 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* coffcode.h (coff_set_alignment_hook): Warn if the file lies
@@ -250,7 +415,7 @@
(rsrc_count_entries): Add range checking.
(rsrc_parse_entry): Likewise.
- 2014-11-04 Nick Clifton <nickc@redhat.com>
+2014-11-04 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* compress.c (bfd_get_full_section_contents): Improve test for
@@ -260,7 +425,23 @@
* archive.c (_bfd_slurp_extended_name_table): Handle archives with
corrupt extended name tables.
- 2014-11-03 Nick Clifton <nickc@redhat.com>
+2014-11-04 Alan Modra <amodra@gmail.com>
+
+ * elf32-spu.c (ovl_mgr_stat): New function.
+ (spu_elf_open_builtin_lib): Pass to bfd_openr_iovec.
+
+2014-11-03 Andrew Burgess <andrew.burgess@embecosm.com>
+
+ * elf32-avr.c (elf32_avr_relax_delete_bytes): During linker
+ relaxation, reduce the size of symbols that span the deleted
+ bytes.
+
+2014-11-03 Andrew Burgess <andrew.burgess@embecosm.com>
+
+ * elf32-avr.c (elf32_avr_relax_delete_bytes): Modify symbols
+ located at the very end of the section.
+
+2014-11-03 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* aoutx.h (slurp_symbol_table): Check that computed table size is
@@ -292,7 +473,26 @@
* xcofflink.c (xcoff_link_input_bfd): Check offset against
length of string table.
- 2014-10-31 Nick Clifton <nickc@redhat.com>
+2014-11-03 Nick Clifton <nickc@redhat.com>
+
+ * po/fi.po: Updated Finnish translation.
+
+2014-10-31 Andrew Pinski <apinski@cavium.com>
+ Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com>
+
+ * archures.c: Add octeon3 for mips target.
+ * bfd-in2.h: Regenerate.
+ * bfd/cpu-mips.c: Define I_mipsocteon3.
+ nfo_struct): Add octeon3 support.
+ * bfd/elfxx-mips.c: (_bfd_elf_mips_mach): Add support for
+ octeon3.
+ (mips_set_isa_flags): Add support for octeon3.
+ (bfd_mips_isa_ext): Add bfd_mach_mips_octeon3.
+ (mips_mach_extensions): Make bfd_mach_mips_octeon3 an
+ extension of bfd_mach_mips_octeon2.
+ (print_mips_isa_ext): Print the value of Octeon3.
+
+2014-10-31 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* coffgen.c (_bfd_coff_get_external_symbols): Do not try to load a
@@ -301,78 +501,39 @@
table bigger than the file.
* tekhex.c (first_phase): Check that the section range is sane.
-2014-11-11 Alan Modra <amodra@gmail.com>
-
- * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Adjust section
- size check to account for possible zero terminator.
-
-2014-11-10 Matthew Fortune <matthew.fortune@imgtec.com>
-
- Apply trunk patch:
- * elfxx-mips.c (update_mips_abiflags_isa): Add E_MIPS_ARCH_32R6
- and E_MIPS_ARCH_64R6 support.
-
-2014-11-07 H.J. Lu <hongjiu.lu@intel.com>
-
- Apply trunk patch:
- 2014-11-07 H.J. Lu <hongjiu.lu@intel.com>
-
- PR ld/17482
- * elf64-x86-64.c (elf_x86_64_relocate_section): Update comments
- for IE->LE transition.
-
-2014-11-04 Tristan Gingold <gingold@adacore.com>
-
- * development.sh: Set development to false.
-
-2014-11-03 Nick Clifton <nickc@redhat.com>
-
- * po/fi.po: Updated Finnish translation.
-
-2014-10-31 Nick Clifton <nickc@redhat.com>
-
- Apply trunk patch:
+2014-10-30 Nick Clifton <nickc@redhat.com>
- 2014-10-30 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* ihex.c (ihex_scan): Fix typo in invocation of ihex_bad_byte.
* coffgen.c (coff_get_normalized_symtab): Prevent buffer overrun.
-2014-10-30 Nick Clifton <nickc@redhat.com>
-
- Appy trunk patch:
+2014-10-29 Nick Clifton <nickc@redhat.com>
- 2014-10-29 Nick Clifton <nickc@redhat.com>
* elf.c (bfd_section_from_shdr): Fix heap use after free memory
leak.
-2014-10-28 Matthew Fortune <matthew.fortune@imgtec.com>
-
- Apply trunk patches:
+2014-10-29 Dennis Brueni <dbrueni@slickedit.com>
- 2014-10-22 Matthew Fortune <matthew.fortune@imgtec.com>
- * elfxx-mips.c (print_mips_ases): Print unknown ASEs.
- (print_mips_isa_ext): Print the value of an unknown extension.
+ * elf.c (elfcore_write_lwpstatus): Fix typo in call to memcpy.
2014-10-28 Nick Clifton <nickc@redhat.com>
- Apply trunk patches:
-
- 2014-10-28 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* elf.c (bfd_section_from_shdr): Allocate and free the recursion
detection table on a per-bfd basis.
* peXXigen.c (pe_print_edata): Handle binaries with a truncated
export table.
- 2014-10-28 Andreas Schwab <schwab@suse.de>
- Nick Clifton <nickc@redhat.com>
+2014-10-28 Andreas Schwab <schwab@suse.de>
+ Nick Clifton <nickc@redhat.com>
+
PR binutils/17510
* srec.c (srec_bad_byte): Increase size of buf to allow for
negative values.
(srec_scan): Use an unsigned char buffer to hold header bytes.
- 2014-10-27 Nick Clifton <nickc@redhat.com>
+2014-10-27 Nick Clifton <nickc@redhat.com>
+
PR binutils/17512
* elf.c (bfd_section_from_shdr): Detect and warn about ELF
binaries with a group of sections linked by the string table
@@ -386,26 +547,68 @@
* elf.c (setup_group): Improve handling of corrupt group
sections.
-2014-10-28 Alan Modra <amodra@gmail.com>
+2014-10-24 Tejas Belagod <tejas.belagod@arm.com>
+
+ * bfd-in.h (bfd_elf64_aarch64_set_options): Add a parameter.
+ * bfd-in2.h (bfd_elf64_aarch64_set_options): Likewise.
+ * elfnn-aarch64.c (aarch64_erratum_835769_stub): New.
+ (elf_aarch64_stub_type): Add new type
+ aarch64_stub_erratum_835769_veneer.
+ (elf_aarch64_stub_hash_entry): New fields for erratum 835769.
+ (aarch64_erratum_835769_fix): New data struct to record erratum
+ 835769.
+ (elf_aarch64_link_hash_table: Global flags for 835769.
+ (aarch64_build_one_stub): Add case for 835769.
+ (aarch64_size_one_stub): Likewise.
+ (aarch64_mem_op_p, aarch64_mlxl_p,
+ aarch64_erratum_sequence,erratum_835769_scan):
+ New. Decode and scan functions for erratum 835769.
+ (elf_aarch64_create_or_find_stub_sec): New.
+ (elfNN_aarch64_size_stubs): Look for erratum 835769 and record
+ them.
+ (bfd_elfNN_aarch64_set_options: Set global flag for 835769.
+ (erratum_835769_branch_to_stub_data,
+ make_branch_to_erratum_835769_stub):New. Connect up all the
+ erratum stubs to occurances by branches.
+ (elfNN_aarch64_write_section): New hook.
+ (aarch64_map_one_stub): Output erratum stub symbol.
+ (elfNN_aarch64_size_dynamic_sections): Init mapping symbol
+ information for erratum 835769.
+ (elf_backend_write_section): Define.
+
+2014-10-23 Victor Kamensky <victor.kamensky@linaro.org>
+
+ * elf32-arm.c (read_code32): New function to read 32 bit
+ arm instruction.
+ (read_code16): New function to read 16 bit thumb instrution.
+ (elf32_arm_plt0_size, elf32_arm_plt_size): Use read_code32
+ and read_code16 to read instructions.
+
+2014-10-22 Matthew Fortune <matthew.fortune@imgtec.com>
- Apply trunk patches:
+ * elfxx-mips.c (print_mips_ases): Print unknown ASEs.
+ (print_mips_isa_ext): Print the value of an unknown extension.
+
+2014-10-21 Alan Modra <amodra@gmail.com>
- 2014-10-21 Alan Modra <amodra@gmail.com>
* elf64-ppc.c (ppc64_elf_tls_optimize): Ignore relocs against toc
entries that aren't a multiple of 8 rather than failing assertion.
- 2014-10-21 Alan Modra <amodra@gmail.com>
+2014-10-21 Alan Modra <amodra@gmail.com>
+
* elf64-ppc.c (ppc64_elf_size_stubs): Add gcc-4.9 libgomp functions
to thread_starter.
- 2014-10-18 Alan Modra <amodra@gmail.com>
+2014-10-18 Alan Modra <amodra@gmail.com>
+
* elf64-ppc.c (ppc64_elf_add_symbol_hook): If function code
section for function symbols defined in .opd is discarded, let
the symbol appear to be undefined.
(opd_entry_value): Ensure the result section is that for the
function code section in the same object as the OPD entry.
- 2014-10-16 Alan Modra <amodra@gmail.com>
+2014-10-16 Alan Modra <amodra@gmail.com>
+
PR 17492
* elf32-arm.c (elf32_arm_add_symbol_hook): Only set has_gnu_symbols
on ELF output bfd.
@@ -420,12 +623,14 @@
* elf-s390-common.c (elf_s390_add_symbol_hook): Likewise. Handle
STB_GNU_UNIQUE too.
- 2014-10-16 Alan Modra <amodra@gmail.com>
+2014-10-16 Alan Modra <amodra@gmail.com>
+
* elf64-ppc.c (ppc64_elf_before_check_relocs): Do .opd processing
even when output is not ppc64 ELF. Remove redundant tests on
type of input bfd.
- 2014-10-15 Alan Modra <amodra@gmail.com>
+2014-10-15 Alan Modra <amodra@gmail.com>
+
PR 17481
* aoutx.h (NAME (aout, find_nearest_line)): Add "discriminator_ptr"
param, group "section" and "offset" params. Zero discriminator.
@@ -502,7 +707,8 @@
* libbfd.h: Regenerate.
* libcoff.h: Regenerate.
- 2014-10-15 Alan Modra <amodra@gmail.com>
+2014-10-15 Alan Modra <amodra@gmail.com>
+
* targets.c (BFD_JUMP_TABLE_SYMBOLS): Use NAME##_find_line.
* aout-adobe.c (aout_32_find_line): Define.
(aout_32_bfd_make_debug_symbol, aout_32_bfd_reloc_type_lookup,
@@ -546,39 +752,16 @@
* libbfd.h: Regenerate.
* libcoff.h: Regenerate.
-2014-10-24 Tejas Belagod <tejas.belagod@arm.com>
+2014-10-15 Tristan Gingold <gingold@adacore.com>
- * bfd-in.h (bfd_elf64_aarch64_set_options): Add a parameter.
- * bfd-in2.h (bfd_elf64_aarch64_set_options): Likewise.
- * elfnn-aarch64.c (aarch64_erratum_835769_stub): New.
- (elf_aarch64_stub_type): Add new type
- aarch64_stub_erratum_835769_veneer.
- (elf_aarch64_stub_hash_entry): New fields for erratum 835769.
- (aarch64_erratum_835769_fix): New data struct to record erratum
- 835769.
- (elf_aarch64_link_hash_table: Global flags for 835769.
- (aarch64_build_one_stub): Add case for 835769.
- (aarch64_size_one_stub): Likewise.
- (aarch64_mem_op_p, aarch64_mlxl_p,
- aarch64_erratum_sequence,erratum_835769_scan):
- New. Decode and scan functions for erratum 835769.
- (elf_aarch64_create_or_find_stub_sec): New.
- (elfNN_aarch64_size_stubs): Look for erratum 835769 and record
- them.
- (bfd_elfNN_aarch64_set_options: Set global flag for 835769.
- (erratum_835769_branch_to_stub_data,
- make_branch_to_erratum_835769_stub):New. Connect up all the
- erratum stubs to occurances by branches.
- (elfNN_aarch64_write_section): New hook.
- (aarch64_map_one_stub): Output erratum stub symbol.
- (elfNN_aarch64_size_dynamic_sections): Init mapping symbol
- information for erratum 835769.
- (elf_backend_write_section): Define.
+ * version.m4: Bump version to 2.25.51
+ * configure: Regenerate.
-2014-10-14 Tristan Gingold <gingold@adacore.com>
+2014-10-14 H.J. Lu <hongjiu.lu@intel.com>
- * version.m4: Bump version to 2.24.90
- * configure: Regenerate.
+ * elf32-i386.c (elf_i386_convert_mov_to_lea): Skip if relocation
+ offset is less than 2.
+ * elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Likewise.
2014-10-14 Alan Modra <amodra@gmail.com>
diff --git a/binutils-2.25/bfd/Makefile.in b/binutils-2.25/bfd/Makefile.in
index 2c385d5..5ee1650 100644
--- a/binutils-2.25/bfd/Makefile.in
+++ b/binutils-2.25/bfd/Makefile.in
@@ -16,7 +16,7 @@
@SET_MAKE@
#
-# Copyright (C) 2012-2014 Free Software Foundation, Inc.
+# Copyright (C) 2012-2015 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/binutils-2.25/bfd/archures.c b/binutils-2.25/bfd/archures.c
index c9fd6c8..5e069b2 100644
--- a/binutils-2.25/bfd/archures.c
+++ b/binutils-2.25/bfd/archures.c
@@ -179,6 +179,7 @@ DESCRIPTION
.#define bfd_mach_mips_octeon 6501
.#define bfd_mach_mips_octeonp 6601
.#define bfd_mach_mips_octeon2 6502
+.#define bfd_mach_mips_octeon3 6503
.#define bfd_mach_mips_xlr 887682 {* decimal 'XLR' *}
.#define bfd_mach_mipsisa32 32
.#define bfd_mach_mipsisa32r2 33
diff --git a/binutils-2.25/bfd/bfd-in2.h b/binutils-2.25/bfd/bfd-in2.h
index 5f7879f..97f0142 100644
--- a/binutils-2.25/bfd/bfd-in2.h
+++ b/binutils-2.25/bfd/bfd-in2.h
@@ -1966,6 +1966,7 @@ enum bfd_architecture
#define bfd_mach_mips_octeon 6501
#define bfd_mach_mips_octeonp 6601
#define bfd_mach_mips_octeon2 6502
+#define bfd_mach_mips_octeon3 6503
#define bfd_mach_mips_xlr 887682 /* decimal 'XLR' */
#define bfd_mach_mipsisa32 32
#define bfd_mach_mipsisa32r2 33
diff --git a/binutils-2.25/bfd/configure b/binutils-2.25/bfd/configure
index ea5d50d..b70a6d0 100755
--- a/binutils-2.25/bfd/configure
+++ b/binutils-2.25/bfd/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.64 for bfd 2.24.90.
+# Generated by GNU Autoconf 2.64 for bfd 2.25.51.
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
@@ -556,8 +556,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='bfd'
PACKAGE_TARNAME='bfd'
-PACKAGE_VERSION='2.24.90'
-PACKAGE_STRING='bfd 2.24.90'
+PACKAGE_VERSION='2.25.51'
+PACKAGE_STRING='bfd 2.25.51'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1349,7 +1349,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures bfd 2.24.90 to adapt to many kinds of systems.
+\`configure' configures bfd 2.25.51 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1420,7 +1420,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of bfd 2.24.90:";;
+ short | recursive ) echo "Configuration of bfd 2.25.51:";;
esac
cat <<\_ACEOF
@@ -1541,7 +1541,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-bfd configure 2.24.90
+bfd configure 2.25.51
generated by GNU Autoconf 2.64
Copyright (C) 2009 Free Software Foundation, Inc.
@@ -2183,7 +2183,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by bfd $as_me 2.24.90, which was
+It was created by bfd $as_me 2.25.51, which was
generated by GNU Autoconf 2.64. Invocation command line was
$ $0 $@
@@ -3991,7 +3991,7 @@ fi
# Define the identity of the package.
PACKAGE='bfd'
- VERSION='2.24.90'
+ VERSION='2.25.51'
cat >>confdefs.h <<_ACEOF
@@ -16567,7 +16567,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by bfd $as_me 2.24.90, which was
+This file was extended by bfd $as_me 2.25.51, which was
generated by GNU Autoconf 2.64. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -16631,7 +16631,7 @@ Report bugs to the package provider."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-bfd config.status 2.24.90
+bfd config.status 2.25.51
configured by $0, generated by GNU Autoconf 2.64,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff --git a/binutils-2.25/bfd/cpu-mips.c b/binutils-2.25/bfd/cpu-mips.c
index b617aaa..a376944 100644
--- a/binutils-2.25/bfd/cpu-mips.c
+++ b/binutils-2.25/bfd/cpu-mips.c
@@ -102,6 +102,7 @@ enum
I_mipsocteon,
I_mipsocteonp,
I_mipsocteon2,
+ I_mipsocteon3,
I_xlr,
I_micromips
};
@@ -152,6 +153,7 @@ static const bfd_arch_info_type arch_info_struct[] =
N (64, 64, bfd_mach_mips_octeon,"mips:octeon", FALSE, NN(I_mipsocteon)),
N (64, 64, bfd_mach_mips_octeonp,"mips:octeon+", FALSE, NN(I_mipsocteonp)),
N (64, 64, bfd_mach_mips_octeon2,"mips:octeon2", FALSE, NN(I_mipsocteon2)),
+ N (64, 64, bfd_mach_mips_octeon3, "mips:octeon3", FALSE, NN(I_mipsocteon3)),
N (64, 64, bfd_mach_mips_xlr, "mips:xlr", FALSE, NN(I_xlr)),
N (64, 64, bfd_mach_mips_micromips,"mips:micromips",FALSE,0)
};
diff --git a/binutils-2.25/bfd/development.sh b/binutils-2.25/bfd/development.sh
index 416ec8c..4c0f5b9 100644
--- a/binutils-2.25/bfd/development.sh
+++ b/binutils-2.25/bfd/development.sh
@@ -16,4 +16,4 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Controls whether to enable development-mode features by default.
-development=false
+development=true
diff --git a/binutils-2.25/bfd/doc/Makefile.in b/binutils-2.25/bfd/doc/Makefile.in
index 65ad42d..3be6a5e 100644
--- a/binutils-2.25/bfd/doc/Makefile.in
+++ b/binutils-2.25/bfd/doc/Makefile.in
@@ -16,7 +16,7 @@
@SET_MAKE@
#
-# Copyright (C) 2012-2014 Free Software Foundation, Inc.
+# Copyright (C) 2012-2015 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/binutils-2.25/bfd/elf-attrs.c b/binutils-2.25/bfd/elf-attrs.c
index e74176f..14420f2 100644
--- a/binutils-2.25/bfd/elf-attrs.c
+++ b/binutils-2.25/bfd/elf-attrs.c
@@ -455,6 +455,8 @@ _bfd_elf_parse_attributes (bfd *abfd, Elf_Internal_Shdr * hdr)
section_len = bfd_get_32 (abfd, p);
p += 4;
+ if (section_len == 0)
+ break;
if (section_len > len)
section_len = len;
len -= section_len;
@@ -487,6 +489,8 @@ _bfd_elf_parse_attributes (bfd *abfd, Elf_Internal_Shdr * hdr)
p += n;
subsection_len = bfd_get_32 (abfd, p);
p += 4;
+ if (subsection_len == 0)
+ break;
if (subsection_len > section_len)
subsection_len = section_len;
section_len -= subsection_len;
diff --git a/binutils-2.25/bfd/elf32-arm.c b/binutils-2.25/bfd/elf32-arm.c
index c507e4f..bbda298 100644
--- a/binutils-2.25/bfd/elf32-arm.c
+++ b/binutils-2.25/bfd/elf32-arm.c
@@ -11746,10 +11746,14 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
/* This needs to happen before Tag_ABI_FP_number_model is merged. */
if (in_attr[Tag_ABI_VFP_args].i != out_attr[Tag_ABI_VFP_args].i)
{
- /* Ignore mismatches if the object doesn't use floating point. */
- if (out_attr[Tag_ABI_FP_number_model].i == 0)
+ /* Ignore mismatches if the object doesn't use floating point or is
+ floating point ABI independent. */
+ if (out_attr[Tag_ABI_FP_number_model].i == AEABI_FP_number_model_none
+ || (in_attr[Tag_ABI_FP_number_model].i != AEABI_FP_number_model_none
+ && out_attr[Tag_ABI_VFP_args].i == AEABI_VFP_args_compatible))
out_attr[Tag_ABI_VFP_args].i = in_attr[Tag_ABI_VFP_args].i;
- else if (in_attr[Tag_ABI_FP_number_model].i != 0)
+ else if (in_attr[Tag_ABI_FP_number_model].i != AEABI_FP_number_model_none
+ && in_attr[Tag_ABI_VFP_args].i != AEABI_VFP_args_compatible)
{
_bfd_error_handler
(_("error: %B uses VFP register arguments, %B does not"),
@@ -14713,7 +14717,7 @@ elf32_arm_post_process_headers (bfd * abfd, struct bfd_link_info * link_info ATT
&& ((i_ehdrp->e_type == ET_DYN) || (i_ehdrp->e_type == ET_EXEC)))
{
int abi = bfd_elf_get_obj_attr_int (abfd, OBJ_ATTR_PROC, Tag_ABI_VFP_args);
- if (abi)
+ if (abi == AEABI_VFP_args_vfp)
i_ehdrp->e_flags |= EF_ARM_ABI_FLOAT_HARD;
else
i_ehdrp->e_flags |= EF_ARM_ABI_FLOAT_SOFT;
@@ -15958,6 +15962,26 @@ const struct elf_size_info elf32_arm_size_info =
bfd_elf32_swap_reloca_out
};
+static bfd_vma
+read_code32 (const bfd *abfd, const bfd_byte *addr)
+{
+ /* V7 BE8 code is always little endian. */
+ if ((elf_elfheader (abfd)->e_flags & EF_ARM_BE8) != 0)
+ return bfd_getl32 (addr);
+
+ return bfd_get_32 (abfd, addr);
+}
+
+static bfd_vma
+read_code16 (const bfd *abfd, const bfd_byte *addr)
+{
+ /* V7 BE8 code is always little endian. */
+ if ((elf_elfheader (abfd)->e_flags & EF_ARM_BE8) != 0)
+ return bfd_getl16 (addr);
+
+ return bfd_get_16 (abfd, addr);
+}
+
/* Return size of plt0 entry starting at ADDR
or (bfd_vma) -1 if size can not be determined. */
@@ -15967,7 +15991,7 @@ elf32_arm_plt0_size (const bfd *abfd, const bfd_byte *addr)
bfd_vma first_word;
bfd_vma plt0_size;
- first_word = H_GET_32 (abfd, addr);
+ first_word = read_code32 (abfd, addr);
if (first_word == elf32_arm_plt0_entry[0])
plt0_size = 4 * ARRAY_SIZE (elf32_arm_plt0_entry);
@@ -15992,17 +16016,17 @@ elf32_arm_plt_size (const bfd *abfd, const bfd_byte *start, bfd_vma offset)
const bfd_byte *addr = start + offset;
/* PLT entry size if fixed on Thumb-only platforms. */
- if (H_GET_32(abfd, start) == elf32_thumb2_plt0_entry[0])
+ if (read_code32 (abfd, start) == elf32_thumb2_plt0_entry[0])
return 4 * ARRAY_SIZE (elf32_thumb2_plt_entry);
/* Respect Thumb stub if necessary. */
- if (H_GET_16(abfd, addr) == elf32_arm_plt_thumb_stub[0])
+ if (read_code16 (abfd, addr) == elf32_arm_plt_thumb_stub[0])
{
plt_size += 2 * ARRAY_SIZE(elf32_arm_plt_thumb_stub);
}
/* Strip immediate from first add. */
- first_insn = H_GET_32(abfd, addr + plt_size) & 0xffffff00;
+ first_insn = read_code32 (abfd, addr + plt_size) & 0xffffff00;
#ifdef FOUR_WORD_PLT
if (first_insn == elf32_arm_plt_entry[0])
@@ -16219,6 +16243,7 @@ elf32_arm_get_synthetic_symtab (bfd *abfd,
becaus elf32_arm_plt_entry isn't defined when FOUR_WORD_PLT isn't defined where elf32_arm_plt_entry_short
and elf32_arm_plt_entry_long are defined instead.
*/
+
#undef elf_backend_plt_sym_val
#define elf_backend_plt_sym_val elf32_arm_plt_sym_val
diff --git a/binutils-2.25/bfd/elf32-avr.c b/binutils-2.25/bfd/elf32-avr.c
index 54d67bf..5aa3cf6 100644
--- a/binutils-2.25/bfd/elf32-avr.c
+++ b/binutils-2.25/bfd/elf32-avr.c
@@ -1881,10 +1881,22 @@ elf32_avr_relax_delete_bytes (bfd *abfd,
isymend = isym + symtab_hdr->sh_info;
for (; isym < isymend; isym++)
{
- if (isym->st_shndx == sec_shndx
- && isym->st_value > addr
- && isym->st_value < toaddr)
- isym->st_value -= count;
+ if (isym->st_shndx == sec_shndx)
+ {
+ if (isym->st_value > addr
+ && isym->st_value <= toaddr)
+ isym->st_value -= count;
+
+ if (isym->st_value <= addr
+ && isym->st_value + isym->st_size > addr)
+ {
+ /* If this assert fires then we have a symbol that ends
+ part way through an instruction. Does that make
+ sense? */
+ BFD_ASSERT (isym->st_value + isym->st_size >= addr + count);
+ isym->st_size -= count;
+ }
+ }
}
}
@@ -1898,11 +1910,22 @@ elf32_avr_relax_delete_bytes (bfd *abfd,
struct elf_link_hash_entry *sym_hash = *sym_hashes;
if ((sym_hash->root.type == bfd_link_hash_defined
|| sym_hash->root.type == bfd_link_hash_defweak)
- && sym_hash->root.u.def.section == sec
- && sym_hash->root.u.def.value > addr
- && sym_hash->root.u.def.value < toaddr)
+ && sym_hash->root.u.def.section == sec)
{
- sym_hash->root.u.def.value -= count;
+ if (sym_hash->root.u.def.value > addr
+ && sym_hash->root.u.def.value <= toaddr)
+ sym_hash->root.u.def.value -= count;
+
+ if (sym_hash->root.u.def.value <= addr
+ && (sym_hash->root.u.def.value + sym_hash->size > addr))
+ {
+ /* If this assert fires then we have a symbol that ends
+ part way through an instruction. Does that make
+ sense? */
+ BFD_ASSERT (sym_hash->root.u.def.value + sym_hash->size
+ >= addr + count);
+ sym_hash->size -= count;
+ }
}
}
diff --git a/binutils-2.25/bfd/elf32-i386.c b/binutils-2.25/bfd/elf32-i386.c
index ad8b557..64cdece 100644
--- a/binutils-2.25/bfd/elf32-i386.c
+++ b/binutils-2.25/bfd/elf32-i386.c
@@ -2580,6 +2580,7 @@ elf_i386_convert_mov_to_lea (bfd *abfd, asection *sec,
/* STT_GNU_IFUNC must keep R_386_GOT32 relocation. */
if (ELF_ST_TYPE (isym->st_info) != STT_GNU_IFUNC
+ && irel->r_offset >= 2
&& bfd_get_8 (input_bfd,
contents + irel->r_offset - 2) == 0x8b)
{
@@ -2609,6 +2610,7 @@ elf_i386_convert_mov_to_lea (bfd *abfd, asection *sec,
&& h->type != STT_GNU_IFUNC
&& h != htab->elf.hdynamic
&& SYMBOL_REFERENCES_LOCAL (link_info, h)
+ && irel->r_offset >= 2
&& bfd_get_8 (input_bfd,
contents + irel->r_offset - 2) == 0x8b)
{
diff --git a/binutils-2.25/bfd/elf32-spu.c b/binutils-2.25/bfd/elf32-spu.c
index 13806ad..ebc9e6a 100644
--- a/binutils-2.25/bfd/elf32-spu.c
+++ b/binutils-2.25/bfd/elf32-spu.c
@@ -1828,6 +1828,18 @@ ovl_mgr_pread (struct bfd *abfd ATTRIBUTE_UNUSED,
return count;
}
+static int
+ovl_mgr_stat (struct bfd *abfd ATTRIBUTE_UNUSED,
+ void *stream,
+ struct stat *sb)
+{
+ struct _ovl_stream *os = (struct _ovl_stream *) stream;
+
+ memset (sb, 0, sizeof (*sb));
+ sb->st_size = (const char *) os->end - (const char *) os->start;
+ return 0;
+}
+
bfd_boolean
spu_elf_open_builtin_lib (bfd **ovl_bfd, const struct _ovl_stream *stream)
{
@@ -1837,7 +1849,7 @@ spu_elf_open_builtin_lib (bfd **ovl_bfd, const struct _ovl_stream *stream)
(void *) stream,
ovl_mgr_pread,
NULL,
- NULL);
+ ovl_mgr_stat);
return *ovl_bfd != NULL;
}
diff --git a/binutils-2.25/bfd/elf64-ppc.c b/binutils-2.25/bfd/elf64-ppc.c
index 0b65ab1..0245a2c 100644
--- a/binutils-2.25/bfd/elf64-ppc.c
+++ b/binutils-2.25/bfd/elf64-ppc.c
@@ -11805,7 +11805,7 @@ group_sections (struct ppc_link_hash_table *htab,
bfd_boolean suppress_size_errors;
suppress_size_errors = FALSE;
- stub14_group_size = stub_group_size;
+ stub14_group_size = stub_group_size >> 10;
if (stub_group_size == 1)
{
/* Default values. */
@@ -11979,6 +11979,8 @@ ppc64_elf_size_stubs (struct bfd_link_info *info)
"GOMP_parallel_loop_runtime_start",
"GOMP_parallel_sections",
"GOMP_parallel_sections_start",
+ /* libgo */
+ "__go_go",
};
unsigned i;
diff --git a/binutils-2.25/bfd/elf64-x86-64.c b/binutils-2.25/bfd/elf64-x86-64.c
index 3881f60..f2b13e7 100644
--- a/binutils-2.25/bfd/elf64-x86-64.c
+++ b/binutils-2.25/bfd/elf64-x86-64.c
@@ -1629,16 +1629,11 @@ elf_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info,
case R_X86_64_PC32_BND:
case R_X86_64_PLT32_BND:
- case R_X86_64_PC32:
- case R_X86_64_PLT32:
- case R_X86_64_32:
- case R_X86_64_64:
/* MPX PLT is supported only if elf_x86_64_arch_bed
is used in 64-bit mode. */
if (ABI_64_P (abfd)
- && info->bndplt
- && (get_elf_x86_64_backend_data (abfd)
- == &elf_x86_64_arch_bed))
+ && (get_elf_x86_64_backend_data (abfd)
+ == &elf_x86_64_arch_bed))
{
elf_x86_64_hash_entry (h)->has_bnd_reloc = TRUE;
@@ -1680,7 +1675,11 @@ elf_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info,
}
case R_X86_64_32S:
+ case R_X86_64_32:
+ case R_X86_64_64:
+ case R_X86_64_PC32:
case R_X86_64_PC64:
+ case R_X86_64_PLT32:
case R_X86_64_GOTPCREL:
case R_X86_64_GOTPCREL64:
if (htab->elf.dynobj == NULL)
@@ -1753,14 +1752,6 @@ elf_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info,
if (h != NULL)
{
- if (r_type == R_X86_64_GOTPLT64)
- {
- /* This relocation indicates that we also need
- a PLT entry, as this is a function. We don't need
- a PLT entry for local symbols. */
- h->needs_plt = 1;
- h->plt.refcount += 1;
- }
h->got.refcount += 1;
old_tls_type = elf_x86_64_hash_entry (h)->tls_type;
}
@@ -2182,8 +2173,6 @@ elf_x86_64_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info,
case R_X86_64_GOTPLT64:
if (h != NULL)
{
- if (r_type == R_X86_64_GOTPLT64 && h->plt.refcount > 0)
- h->plt.refcount -= 1;
if (h->got.refcount > 0)
h->got.refcount -= 1;
if (h->type == STT_GNU_IFUNC)
@@ -2825,6 +2814,7 @@ elf_x86_64_convert_mov_to_lea (bfd *abfd, asection *sec,
/* STT_GNU_IFUNC must keep R_X86_64_GOTPCREL relocation. */
if (ELF_ST_TYPE (isym->st_info) != STT_GNU_IFUNC
+ && irel->r_offset >= 2
&& bfd_get_8 (input_bfd,
contents + irel->r_offset - 2) == 0x8b)
{
@@ -2855,6 +2845,7 @@ elf_x86_64_convert_mov_to_lea (bfd *abfd, asection *sec,
&& h->type != STT_GNU_IFUNC
&& h != htab->elf.hdynamic
&& SYMBOL_REFERENCES_LOCAL (link_info, h)
+ && irel->r_offset >= 2
&& bfd_get_8 (input_bfd,
contents + irel->r_offset - 2) == 0x8b)
{
@@ -3719,12 +3710,7 @@ elf_x86_64_relocate_section (bfd *output_bfd,
case R_X86_64_GOTPCREL64:
/* Use global offset table entry as symbol value. */
case R_X86_64_GOTPLT64:
- /* This is the same as GOT64 for relocation purposes, but
- indicates the existence of a PLT entry. The difficulty is,
- that we must calculate the GOT slot offset from the PLT
- offset, if this symbol got a PLT entry (it was global).
- Additionally if it's computed from the PLT entry, then that
- GOT offset is relative to .got.plt, not to .got. */
+ /* This is obsolete and treated the the same as GOT64. */
base_got = htab->elf.sgot;
if (htab->elf.sgot == NULL)
diff --git a/binutils-2.25/bfd/elfxx-mips.c b/binutils-2.25/bfd/elfxx-mips.c
index cb6fd21..998549d 100644
--- a/binutils-2.25/bfd/elfxx-mips.c
+++ b/binutils-2.25/bfd/elfxx-mips.c
@@ -6607,6 +6607,9 @@ _bfd_elf_mips_mach (flagword flags)
case E_MIPS_MACH_LS3A:
return bfd_mach_mips_loongson_3a;
+ case E_MIPS_MACH_OCTEON3:
+ return bfd_mach_mips_octeon3;
+
case E_MIPS_MACH_OCTEON2:
return bfd_mach_mips_octeon2;
@@ -7002,20 +7005,11 @@ _bfd_mips_elf_section_processing (bfd *abfd, Elf_Internal_Shdr *hdr)
if (strcmp (name, ".sdata") == 0
|| strcmp (name, ".lit8") == 0
|| strcmp (name, ".lit4") == 0)
- {
- hdr->sh_flags |= SHF_ALLOC | SHF_WRITE | SHF_MIPS_GPREL;
- hdr->sh_type = SHT_PROGBITS;
- }
+ hdr->sh_flags |= SHF_ALLOC | SHF_WRITE | SHF_MIPS_GPREL;
else if (strcmp (name, ".srdata") == 0)
- {
- hdr->sh_flags |= SHF_ALLOC | SHF_MIPS_GPREL;
- hdr->sh_type = SHT_PROGBITS;
- }
+ hdr->sh_flags |= SHF_ALLOC | SHF_MIPS_GPREL;
else if (strcmp (name, ".compact_rel") == 0)
- {
- hdr->sh_flags = 0;
- hdr->sh_type = SHT_PROGBITS;
- }
+ hdr->sh_flags = 0;
else if (strcmp (name, ".rtproc") == 0)
{
if (hdr->sh_addralign != 0 && hdr->sh_entsize == 0)
@@ -11480,9 +11474,11 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
name = ".dynsym";
elemsize = MIPS_ELF_SYM_SIZE (output_bfd);
s = bfd_get_section_by_name (output_bfd, name);
- BFD_ASSERT (s != NULL);
- dyn.d_un.d_val = s->size / elemsize;
+ if (s != NULL)
+ dyn.d_un.d_val = s->size / elemsize;
+ else
+ dyn.d_un.d_val = 0;
break;
case DT_MIPS_HIPAGENO:
@@ -11906,6 +11902,10 @@ mips_set_isa_flags (bfd *abfd)
val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_OCTEON;
break;
+ case bfd_mach_mips_octeon3:
+ val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_OCTEON3;
+ break;
+
case bfd_mach_mips_xlr:
val = E_MIPS_ARCH_64 | E_MIPS_MACH_XLR;
break;
@@ -13959,6 +13959,8 @@ bfd_mips_isa_ext (bfd *abfd)
return AFL_EXT_OCTEON;
case bfd_mach_mips_octeonp:
return AFL_EXT_OCTEONP;
+ case bfd_mach_mips_octeon3:
+ return AFL_EXT_OCTEON3;
case bfd_mach_mips_octeon2:
return AFL_EXT_OCTEON2;
case bfd_mach_mips_xlr:
@@ -14792,6 +14794,7 @@ struct mips_mach_extension
static const struct mips_mach_extension mips_mach_extensions[] =
{
/* MIPS64r2 extensions. */
+ { bfd_mach_mips_octeon3, bfd_mach_mips_octeon2 },
{ bfd_mach_mips_octeon2, bfd_mach_mips_octeonp },
{ bfd_mach_mips_octeonp, bfd_mach_mips_octeon },
{ bfd_mach_mips_octeon, bfd_mach_mipsisa64r2 },
@@ -15588,6 +15591,9 @@ print_mips_isa_ext (FILE *file, unsigned int isa_ext)
case AFL_EXT_XLR:
fputs ("RMI XLR", file);
break;
+ case AFL_EXT_OCTEON3:
+ fputs ("Cavium Networks Octeon3", file);
+ break;
case AFL_EXT_OCTEON2:
fputs ("Cavium Networks Octeon2", file);
break;
diff --git a/binutils-2.25/bfd/version.h b/binutils-2.25/bfd/version.h
index ec0bedc..7c349d6 100644
--- a/binutils-2.25/bfd/version.h
+++ b/binutils-2.25/bfd/version.h
@@ -1,4 +1,4 @@
-#define BFD_VERSION_DATE 20141119
+#define BFD_VERSION_DATE 20141117
#define BFD_VERSION @bfd_version@
#define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@
#define REPORT_BUGS_TO @report_bugs_to@
diff --git a/binutils-2.25/bfd/version.m4 b/binutils-2.25/bfd/version.m4
index c92d143..0f2f235 100644
--- a/binutils-2.25/bfd/version.m4
+++ b/binutils-2.25/bfd/version.m4
@@ -1 +1 @@
-m4_define([BFD_VERSION], [2.24.90])
+m4_define([BFD_VERSION], [2.25.51])
diff --git a/binutils-2.25/binutils/.gitignore b/binutils-2.25/binutils/.gitignore
new file mode 100644
index 0000000..1934ea0
--- /dev/null
+++ b/binutils-2.25/binutils/.gitignore
@@ -0,0 +1,58 @@
+/addr2line
+/ar
+/bin2c
+/coffdump
+/cxxfilt
+/dlltool
+/dllwrap
+/elfedit
+/nlmconv
+/nm-new
+/objcopy
+/objdump
+/ranlib
+/readelf
+/size
+/srconv
+/strings
+/strip-new
+/sysdump
+/sysinfo
+/windmc
+/windres
+
+/arlex.c
+/arparse.c
+/arparse.h
+/deflex.c
+/defparse.c
+/defparse.h
+/mcparse.c
+/mcparse.h
+/nlmheader.c
+/nlmheader.h
+/rcparse.c
+/rcparse.h
+/sysinfo.c
+/sysinfo.h
+/syslex.c
+/sysroff.c
+/sysroff.h
+
+/doc/addr2line.1
+/doc/ar.1
+/doc/c++filt.1
+/doc/cxxfilt.man
+/doc/dlltool.1
+/doc/elfedit.1
+/doc/nlmconv.1
+/doc/nm.1
+/doc/objcopy.1
+/doc/objdump.1
+/doc/ranlib.1
+/doc/readelf.1
+/doc/size.1
+/doc/strings.1
+/doc/strip.1
+/doc/windmc.1
+/doc/windres.1
diff --git a/binutils-2.25/binutils/ChangeLog b/binutils-2.25/binutils/ChangeLog
index c2f69e9..9f7e17c 100644
--- a/binutils-2.25/binutils/ChangeLog
+++ b/binutils-2.25/binutils/ChangeLog
@@ -1,8 +1,8 @@
-2014-11-17 Nick Clifton <nickc@redhat.com>
+2014-12-25 Thomas Preud'homme <thomas.preudhomme@arm.com>
- Apply trunk patches:
+ * readelf.c (arm_attr_tag_ABI_VFP_args): Add "compatible".
- 2014-11-14 Nick Clifton <nickc@redhat.com>
+2014-11-14 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* dwarf.c (get_encoded_value): Add an 'end' parameter. Change the
@@ -16,7 +16,7 @@
read. Update call to get_encoded_value. Warn if the read CFA
expressions are too big.
- 2014-11-13 Nick Clifton <nickc@redhat.com>
+2014-11-13 Nick Clifton <nickc@redhat.com>
PR binutils/17531
* readelf.c (process_version_sections): If the read of the version
@@ -30,7 +30,7 @@
(print_gnu_note): Do not print the note if the descsz is too
small.
- 2014-11-12 Nick Clifton <nickc@redhat.com>
+2014-11-12 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* dwarf.c (read_and_display_attr_value): Check that we do not read
@@ -50,7 +50,7 @@
string table. Avoid walking off the end of the stabs data.
* stabs.c (parse_stab_string): Add check for a NULL name.
- 2014-11-11 Nick Clifton <nickc@redhat.com>
+2014-11-11 Nick Clifton <nickc@redhat.com>
PR binutils/17531
* binutils/readelf.c (dynamic_nent): Change type to size_t.
@@ -77,17 +77,21 @@
size_t. Skip processing of sections headers if there are none.
Improve out of memory error messages.
- 2014-11-11 Nick Clifton <nickc@redhat.com>
+2014-11-11 Nick Clifton <nickc@redhat.com>
+
+ * po/fr.po: Updated French translation.
+
+2014-11-11 Nick Clifton <nickc@redhat.com>
PR binutils/17531
* readelf.c (display_arm_attribute): Avoid reading off the end of
the buffer when processing a Tag_nodefaults.
- 2014-11-10 Nick Clifton <nickc@redhat.com>
+2014-11-10 Nick Clifton <nickc@redhat.com>
PR binutils/17531
- * readelf.c (ia64_process_unwind): Replace assertion with an error
- message. Add range checking for group section indicies.
+ * (ia64_process_unwind): Replace assertion with an error message.
+ Add range checking for group section indicies.
(hppa_process_unwind): Replace assertion with an error message.
(process_syminfo): Likewise.
(decode_arm_unwind_bytecode): Add range checking.
@@ -98,13 +102,18 @@
(display_tic6x_attribute): Likewise.
(display_msp430x_attribute): Likewise.
- 2014-11-10 Nick Clifton <nickc@redhat.com>
+2014-11-10 Nick Clifton <nickc@redhat.com>
PR binutils/17552
- * objcopy.c (copy_archive): Clean up temporary files even if an
- error occurs.
+ * (copy_archive): Clean up temporary files even if an error
+ occurs.
+
+2014-11-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (process_dynamic_section): Cast time value to unsigned
+ long to print.
- 2014-11-07 Nick Clifton <nickc@redhat.com>
+2014-11-07 Nick Clifton <nickc@redhat.com>
PR binutils/17531
* readelf.c (get_data): Avoid allocating memory when we know that
@@ -124,7 +133,7 @@
(display_msp430x_attribute): Likewise.
(process_mips_specific): Add range check.
- 2014-11-06 Nick Clifton <nickc@redhat.com>
+2014-11-06 Nick Clifton <nickc@redhat.com>
PR binutils/17552, binutils/17533
* bucomm.c (is_valid_archive_path): New function. Returns false
@@ -136,7 +145,7 @@
* doc/binutils.texi: Update documentation to mention the
limitation on pathname of archive members.
- 2014-11-05 Nick Clifton <nickc@redhat.com>
+2014-11-05 Nick Clifton <nickc@redhat.com>
PR binutils/17531
* readelf.c (printable_section_name): New function.
@@ -158,7 +167,7 @@
small.
(process_mips_specific): Check for a corrupt GOT symbol offset.
- 2014-11-05 Nick Clifton <nickc@redhat.com>
+2014-11-05 Nick Clifton <nickc@redhat.com>
PR binutils/17533
* bucomm.c (is_valid_archive_path): New function.
@@ -167,7 +176,15 @@
member filename before extracting it.
* objcopy.c (copy_archive): Likewise.
- 2014-11-04 Nick Clifton <nickc@redhat.com>
+2014-11-05 Jan-Benedict Glaw <jbglaw@lug-owl.de>
+
+ * readelf.c (process_mips_specific): Fix format string warning.
+
+2014-11-04 Matthew Fortune <matthew.fortune@imgtec.com>
+
+ * readelf.c (process_mips_specific): Rename index to idx.
+
+2014-11-04 Nick Clifton <nickc@redhat.com>
PR binutils/17531
* readelf.c (get_data): If the reason parameter is null, do not
@@ -179,6 +196,7 @@
(get_file_header): Pass TRUE to get_section_headers.
(process_dynamic_section): Change an assert to an error message.
(process_symbol_table): Handle corrupt histograms.
+
(get_32bit_program_headers): Verify program header entry size
before reading in the program headers.
(get_64bit_program_headers): Likewise.
@@ -190,27 +208,44 @@
the section before attempting to read the length of the next
attribute.
- 2014-11-03 Nick Clifton <nickc@redhat.com>
+2014-11-03 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* objdump.c (slurp_symtab): Fail gracefully if the table could not
be read.
(dump_relocs_in_section): Likewise.
-2014-11-11 Nick Clifton <nickc@redhat.com>
-
- * po/fr.po: Updated French translation.
-
2014-11-03 Nick Clifton <nickc@redhat.com>
* po/fi.po: Updated Finnish translation.
* po/sv.po: Updated Swedish translation.
+2014-11-01 Hans-Peter Nilsson <hp@axis.com>
+
+ * readelf.c (get_32bit_elf_symbols): Cast error
+ parameters of bfd_size_type with the %lx format to
+ unsigned long.
+
+2014-10-31 Andrew Pinski <apinski@cavium.com>
+ Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com>
+
+ * readelf.c (print_mips_isa_ext): Print the value of Octeon3.
+
+2014-10-31 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * cxxfilt.c (main): Add case for dlang_demangling style.
+
2014-10-31 Nick Clifton <nickc@redhat.com>
- Apply trunk patch:
+ PR binutils/17512
+ * readelf.c (process_program_headers): Avoid memory exhaustion due
+ to corrupt values in a dynamis segment header.
+ (get_32bit_elf_symbols): Do not attempt to read an over-large
+ section.
+ (get_64bit_elf_symbols): Likewise.
+
+2014-10-31 Nick Clifton <nickc@redhat.com>
- 2014-10-31 Nick Clifton <nickc@redhat.com>
* strings.c: Add new command line option --data to only scan the
initialized, loadable data secions of binaries. Choose the
default behaviour of --all or --data based upon a configure
@@ -226,9 +261,6 @@
2014-10-30 Nick Clifton <nickc@redhat.com>
- Apply trunk patch:
-
- 2014-10-30 Nick Clifton <nickc@redhat.com>
* readelf.c (CHECK_ENTSIZE_VALUES): Rewrite error message so that
there is a single string for translation.
(dynamic_section_mips_val): Likewise.
@@ -239,11 +271,8 @@
* po/sr.po: New Serbian translation.
* po/sv.po: Updated Swedish translation.
-2014-10-28 Matthew Fortune <matthew.fortune@imgtec.com>
-
- Apply trunk patch:
+2014-10-22 Matthew Fortune <matthew.fortune@imgtec.com>
- 2014-10-22 Matthew Fortune <matthew.fortune@imgtec.com>
* readelf.c (print_mips_ases): Print unknown ASEs.
(print_mips_isa_ext): Print the value of an unknown extension.
diff --git a/binutils-2.25/binutils/Makefile.in b/binutils-2.25/binutils/Makefile.in
index c6e0003..aaf4d51 100644
--- a/binutils-2.25/binutils/Makefile.in
+++ b/binutils-2.25/binutils/Makefile.in
@@ -16,7 +16,7 @@
@SET_MAKE@
#
-# Copyright (C) 2012-2014 Free Software Foundation, Inc.
+# Copyright (C) 2012-2015 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/binutils-2.25/binutils/bfdtest2.c b/binutils-2.25/binutils/bfdtest2.c
index a791080..8b54765 100644
--- a/binutils-2.25/binutils/bfdtest2.c
+++ b/binutils-2.25/binutils/bfdtest2.c
@@ -1,106 +1,106 @@
-/* A program to test BFD.
+/* A program to test BFD.
Copyright (C) 2012-2014 Free Software Foundation, Inc.
-
- This file is part of the GNU Binutils.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-#include "sysdep.h"
-#include "bfd.h"
-
-static void
-die (const char *s)
-{
- printf ("oops: %s\n", s);
- exit (1);
-}
-
-static void *
-iovec_open (struct bfd *nbfd ATTRIBUTE_UNUSED, void *open_closure)
-{
- return open_closure;
-}
-
-static file_ptr iovec_read (struct bfd *nbfd ATTRIBUTE_UNUSED,
- void *stream, void *buf, file_ptr nbytes,
- file_ptr offset)
-{
- FILE* file = (FILE*) stream;
-
- if (fseek(file, offset, SEEK_SET) != 0)
- die ("fseek error");
-
- return fread (buf, 1, nbytes, file);
-}
-
-static int
-iovec_stat (struct bfd *abfd ATTRIBUTE_UNUSED,
- void *stream, struct stat *sb)
-{
- return fstat (fileno ((FILE*) stream), sb);
-}
-
-static bfd_boolean
-check_format_any (struct bfd *abfd, bfd_format format)
-{
- char** targets = NULL;
-
- if (bfd_check_format_matches (abfd, format, &targets))
- return TRUE;
-
- if (targets)
- {
- bfd_find_target (targets[0], abfd);
-
- return bfd_check_format (abfd, format);
- }
-
- return FALSE;
-}
-
-int
-main (int argc, const char** argv)
-{
- FILE* file;
- bfd *abfd, *mbfd;
-
- if (argc < 2)
- die ("Usage: test archivefile");
-
- file = fopen(argv[1], "rb");
- if (!file)
- die ("file not found");
-
- abfd = bfd_openr_iovec (argv[1], 0, iovec_open, file,
- iovec_read, NULL, iovec_stat);
- if (!abfd)
- die ("error opening file");
-
- if (!check_format_any (abfd, bfd_archive))
- die ("not an archive");
-
- mbfd = bfd_openr_next_archived_file (abfd, 0);
- if (!mbfd)
- die ("error opening archive member");
-
- if (!bfd_close (mbfd))
- die ("error closing archive member");
-
- if (!bfd_close (abfd))
- die ("error closing archive");
-
- return 0;
-}
+
+ This file is part of the GNU Binutils.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+#include "sysdep.h"
+#include "bfd.h"
+
+static void
+die (const char *s)
+{
+ printf ("oops: %s\n", s);
+ exit (1);
+}
+
+static void *
+iovec_open (struct bfd *nbfd ATTRIBUTE_UNUSED, void *open_closure)
+{
+ return open_closure;
+}
+
+static file_ptr iovec_read (struct bfd *nbfd ATTRIBUTE_UNUSED,
+ void *stream, void *buf, file_ptr nbytes,
+ file_ptr offset)
+{
+ FILE* file = (FILE*) stream;
+
+ if (fseek(file, offset, SEEK_SET) != 0)
+ die ("fseek error");
+
+ return fread (buf, 1, nbytes, file);
+}
+
+static int
+iovec_stat (struct bfd *abfd ATTRIBUTE_UNUSED,
+ void *stream, struct stat *sb)
+{
+ return fstat (fileno ((FILE*) stream), sb);
+}
+
+static bfd_boolean
+check_format_any (struct bfd *abfd, bfd_format format)
+{
+ char** targets = NULL;
+
+ if (bfd_check_format_matches (abfd, format, &targets))
+ return TRUE;
+
+ if (targets)
+ {
+ bfd_find_target (targets[0], abfd);
+
+ return bfd_check_format (abfd, format);
+ }
+
+ return FALSE;
+}
+
+int
+main (int argc, const char** argv)
+{
+ FILE* file;
+ bfd *abfd, *mbfd;
+
+ if (argc < 2)
+ die ("Usage: test archivefile");
+
+ file = fopen(argv[1], "rb");
+ if (!file)
+ die ("file not found");
+
+ abfd = bfd_openr_iovec (argv[1], 0, iovec_open, file,
+ iovec_read, NULL, iovec_stat);
+ if (!abfd)
+ die ("error opening file");
+
+ if (!check_format_any (abfd, bfd_archive))
+ die ("not an archive");
+
+ mbfd = bfd_openr_next_archived_file (abfd, 0);
+ if (!mbfd)
+ die ("error opening archive member");
+
+ if (!bfd_close (mbfd))
+ die ("error closing archive member");
+
+ if (!bfd_close (abfd))
+ die ("error closing archive");
+
+ return 0;
+}
diff --git a/binutils-2.25/binutils/configure b/binutils-2.25/binutils/configure
index 07551c3..70387ea 100755
--- a/binutils-2.25/binutils/configure
+++ b/binutils-2.25/binutils/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.64 for binutils 2.24.90.
+# Generated by GNU Autoconf 2.64 for binutils 2.25.51.
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
@@ -556,8 +556,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='binutils'
PACKAGE_TARNAME='binutils'
-PACKAGE_VERSION='2.24.90'
-PACKAGE_STRING='binutils 2.24.90'
+PACKAGE_VERSION='2.25.51'
+PACKAGE_STRING='binutils 2.25.51'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1333,7 +1333,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures binutils 2.24.90 to adapt to many kinds of systems.
+\`configure' configures binutils 2.25.51 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1404,7 +1404,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of binutils 2.24.90:";;
+ short | recursive ) echo "Configuration of binutils 2.25.51:";;
esac
cat <<\_ACEOF
@@ -1525,7 +1525,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-binutils configure 2.24.90
+binutils configure 2.25.51
generated by GNU Autoconf 2.64
Copyright (C) 2009 Free Software Foundation, Inc.
@@ -1935,7 +1935,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by binutils $as_me 2.24.90, which was
+It was created by binutils $as_me 2.25.51, which was
generated by GNU Autoconf 2.64. Invocation command line was
$ $0 $@
@@ -3743,7 +3743,7 @@ fi
# Define the identity of the package.
PACKAGE='binutils'
- VERSION='2.24.90'
+ VERSION='2.25.51'
cat >>confdefs.h <<_ACEOF
@@ -14850,7 +14850,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by binutils $as_me 2.24.90, which was
+This file was extended by binutils $as_me 2.25.51, which was
generated by GNU Autoconf 2.64. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -14914,7 +14914,7 @@ Report bugs to the package provider."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-binutils config.status 2.24.90
+binutils config.status 2.25.51
configured by $0, generated by GNU Autoconf 2.64,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff --git a/binutils-2.25/binutils/cxxfilt.c b/binutils-2.25/binutils/cxxfilt.c
index 157ebe0..03c4d0c 100644
--- a/binutils-2.25/binutils/cxxfilt.c
+++ b/binutils-2.25/binutils/cxxfilt.c
@@ -239,6 +239,7 @@ main (int argc, char **argv)
case edg_demangling:
case gnat_demangling:
case gnu_v3_demangling:
+ case dlang_demangling:
case auto_demangling:
valid_symbols = standard_symbol_characters ();
break;
diff --git a/binutils-2.25/binutils/doc/Makefile.am b/binutils-2.25/binutils/doc/Makefile.am
index e7a38c2..1c9b989 100644
--- a/binutils-2.25/binutils/doc/Makefile.am
+++ b/binutils-2.25/binutils/doc/Makefile.am
@@ -28,7 +28,7 @@ MANCONF = -Dman
TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
POD2MAN = pod2man --center="GNU Development Tools" \
- --release="binutils-$(VERSION)" --section=1
+ --release="binutils-$(VERSION)" --section=1 --date=" "
# List of man pages generated from binutils.texi
man_MANS = \
diff --git a/binutils-2.25/binutils/doc/Makefile.in b/binutils-2.25/binutils/doc/Makefile.in
index 2b172e1..21079c5 100644
--- a/binutils-2.25/binutils/doc/Makefile.in
+++ b/binutils-2.25/binutils/doc/Makefile.in
@@ -16,7 +16,7 @@
@SET_MAKE@
#
-# Copyright (C) 2012-2014 Free Software Foundation, Inc.
+# Copyright (C) 2012-2015 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -289,7 +289,7 @@ CONFIG = all
MANCONF = -Dman
TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
POD2MAN = pod2man --center="GNU Development Tools" \
- --release="binutils-$(VERSION)" --section=1
+ --release="binutils-$(VERSION)" --section=1 --date=" "
# List of man pages generated from binutils.texi
diff --git a/binutils-2.25/binutils/dwarf.c b/binutils-2.25/binutils/dwarf.c
index 84e628a..4777bab 100644
--- a/binutils-2.25/binutils/dwarf.c
+++ b/binutils-2.25/binutils/dwarf.c
@@ -365,6 +365,9 @@ typedef struct State_Machine_Registers
unsigned int file;
unsigned int line;
unsigned int column;
+ unsigned int discriminator;
+ unsigned int context;
+ unsigned int subprogram;
int is_stmt;
int basic_block;
unsigned char op_index;
@@ -384,19 +387,65 @@ reset_state_machine (int is_stmt)
state_machine_regs.file = 1;
state_machine_regs.line = 1;
state_machine_regs.column = 0;
+ state_machine_regs.discriminator = 0;
+ state_machine_regs.context = 0;
+ state_machine_regs.subprogram = 0;
state_machine_regs.is_stmt = is_stmt;
state_machine_regs.basic_block = 0;
state_machine_regs.end_sequence = 0;
state_machine_regs.last_file_entry = 0;
}
+/* Build a logicals table for reference when reading the actuals table. */
+
+static SMR *logicals_table = NULL;
+static unsigned int logicals_allocated = 0;
+static unsigned int logicals_count = 0;
+
+static void
+free_logicals (void)
+{
+ free (logicals_table);
+ logicals_allocated = 0;
+ logicals_count = 0;
+ logicals_table = NULL;
+}
+
+static void
+append_logical (void)
+{
+ if (logicals_allocated == 0)
+ {
+ logicals_allocated = 4;
+ logicals_table = (SMR *) xmalloc (logicals_allocated * sizeof (SMR));
+ }
+ if (logicals_count >= logicals_allocated)
+ {
+ logicals_allocated *= 2;
+ logicals_table = (SMR *)
+ xrealloc (logicals_table, logicals_allocated * sizeof (SMR));
+ }
+ logicals_table[logicals_count++] = state_machine_regs;
+ printf (_("\t\tLogical %u: 0x%s[%u] file %u line %u discrim %u context %u subprog %u is_stmt %d\n"),
+ logicals_count,
+ dwarf_vmatoa ("x", state_machine_regs.address),
+ state_machine_regs.op_index,
+ state_machine_regs.file,
+ state_machine_regs.line,
+ state_machine_regs.discriminator,
+ state_machine_regs.context,
+ state_machine_regs.subprogram,
+ state_machine_regs.is_stmt);
+}
+
/* Handled an extend line op.
Returns the number of bytes read. */
static int
process_extended_line_op (unsigned char * data,
int is_stmt,
- unsigned char * end)
+ unsigned char * end,
+ int is_logical)
{
unsigned char op_code;
unsigned int bytes_read;
@@ -423,6 +472,8 @@ process_extended_line_op (unsigned char * data,
{
case DW_LNE_end_sequence:
printf (_("End of Sequence\n\n"));
+ if (is_logical)
+ append_logical ();
reset_state_machine (is_stmt);
break;
@@ -453,8 +504,14 @@ process_extended_line_op (unsigned char * data,
break;
case DW_LNE_set_discriminator:
- printf (_("set Discriminator to %s\n"),
- dwarf_vmatoa ("u", read_uleb128 (data, & bytes_read, end)));
+ {
+ unsigned int discrim;
+
+ discrim = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ printf (_("set Discriminator to %u\n"), discrim);
+ state_machine_regs.discriminator = discrim;
+ }
break;
/* HP extensions. */
@@ -567,7 +624,7 @@ fetch_indirect_string (dwarf_vma offset)
if (section->start == NULL)
return (const unsigned char *) _("<no .debug_str section>");
- if (offset > section->size)
+ if (offset >= section->size)
{
warn (_("DW_FORM_strp offset too big: %s\n"),
dwarf_vmatoa ("x", offset));
@@ -577,6 +634,24 @@ fetch_indirect_string (dwarf_vma offset)
return (const unsigned char *) section->start + offset;
}
+static const unsigned char *
+fetch_indirect_line_string (dwarf_vma offset)
+{
+ struct dwarf_section *section = &debug_displays [line_str].section;
+
+ if (section->start == NULL)
+ return (const unsigned char *) _("<no .debug_line_str section>");
+
+ if (offset >= section->size)
+ {
+ warn (_("DW_FORM_line_strp offset too big: %s\n"),
+ dwarf_vmatoa ("x", offset));
+ return (const unsigned char *) _("<offset is too big>");
+ }
+
+ return (const unsigned char *) section->start + offset;
+}
+
static const char *
fetch_indexed_string (dwarf_vma idx, struct cu_tu_set *this_set,
dwarf_vma offset_size, int dwo)
@@ -594,7 +669,7 @@ fetch_indexed_string (dwarf_vma idx, struct cu_tu_set *this_set,
if (this_set != NULL)
index_offset += this_set->section_offsets [DW_SECT_STR_OFFSETS];
- if (index_offset > index_section->size)
+ if (index_offset + offset_size > index_section->size)
{
warn (_("DW_FORM_GNU_str_index offset too big: %s\n"),
dwarf_vmatoa ("x", index_offset));
@@ -607,7 +682,7 @@ fetch_indexed_string (dwarf_vma idx, struct cu_tu_set *this_set,
str_offset = byte_get (index_section->start + index_offset, offset_size);
str_offset -= str_section->address;
- if (str_offset > str_section->size)
+ if (str_offset >= str_section->size)
{
warn (_("DW_FORM_GNU_str_index indirect offset too big: %s\n"),
dwarf_vmatoa ("x", str_offset));
@@ -2616,6 +2691,10 @@ load_debug_info (void * file)
return 0;
}
+/* Experimental DWARF 5 extensions.
+ See http://wiki.dwarfstd.org/index.php?title=TwoLevelLineTables. */
+#define DWARF2_LINE_EXPERIMENTAL_VERSION 0xf006
+
/* Read a DWARF .debug_line section header starting at DATA.
Upon success returns an updated DATA pointer and the LINFO
structure and the END_OF_SEQUENCE pointer will be filled in.
@@ -2626,7 +2705,9 @@ read_debug_line_header (struct dwarf_section * section,
unsigned char * data,
unsigned char * end,
DWARF2_Internal_LineInfo * linfo,
- unsigned char ** end_of_sequence)
+ unsigned char ** end_of_sequence,
+ unsigned int * pinitial_length_size,
+ unsigned int * poffset_size)
{
unsigned char *hdrptr;
unsigned int offset_size;
@@ -2651,6 +2732,8 @@ read_debug_line_header (struct dwarf_section * section,
offset_size = 4;
initial_length_size = 4;
}
+ *pinitial_length_size = initial_length_size;
+ *poffset_size = offset_size;
if (linfo->li_length + initial_length_size > section->size)
{
@@ -2673,15 +2756,30 @@ read_debug_line_header (struct dwarf_section * section,
/* Get and check the version number. */
SAFE_BYTE_GET_AND_INC (linfo->li_version, hdrptr, 2, end);
+ /* Version 0xf006 is for experimental two-level line tables. */
if (linfo->li_version != 2
&& linfo->li_version != 3
- && linfo->li_version != 4)
+ && linfo->li_version != 4
+ && linfo->li_version != 5
+ && linfo->li_version != DWARF2_LINE_EXPERIMENTAL_VERSION)
{
- warn (_("Only DWARF version 2, 3 and 4 line info is currently supported.\n"));
+ warn (_("Only DWARF versions 2-5 line info are currently supported.\n"));
return NULL;
}
+ if (linfo->li_version < 5)
+ {
+ linfo->li_address_size = 0;
+ linfo->li_segment_size = 0;
+ }
+ else if (linfo->li_version != DWARF2_LINE_EXPERIMENTAL_VERSION)
+ {
+ SAFE_BYTE_GET_AND_INC (linfo->li_address_size, hdrptr, 1, end);
+ SAFE_BYTE_GET_AND_INC (linfo->li_segment_size, hdrptr, 1, end);
+ }
+
SAFE_BYTE_GET_AND_INC (linfo->li_prologue_length, hdrptr, offset_size, end);
+
SAFE_BYTE_GET_AND_INC (linfo->li_min_insn_length, hdrptr, 1, end);
if (linfo->li_version >= 4)
@@ -2706,12 +2804,473 @@ read_debug_line_header (struct dwarf_section * section,
return hdrptr;
}
+static void
+display_directory_table_v4 (unsigned char *start, unsigned char *end,
+ unsigned char **pdata)
+{
+ unsigned char *data = *pdata;
+ unsigned int last_dir_entry = 0;
+
+ if (*data == 0)
+ printf (_("\n The Directory Table is empty.\n"));
+ else
+ {
+ printf (_("\n The Directory Table (offset 0x%lx):\n"),
+ (long)(data - start));
+
+ while (data < end && *data != 0)
+ {
+ printf (" %d\t%.*s\n", ++last_dir_entry, (int) (end - data), data);
+
+ data += strnlen ((char *) data, end - data) + 1;
+ }
+ }
+
+ /* Skip the NUL at the end of the table. */
+ *pdata = data + 1;
+}
+
+static void
+display_file_name_table_v4 (unsigned char *start, unsigned char *end,
+ unsigned char **pdata)
+{
+ unsigned char *data = *pdata;
+
+ if (*data == 0)
+ printf (_("\n The File Name Table is empty.\n"));
+ else
+ {
+ printf (_("\n The File Name Table (offset 0x%lx):\n"),
+ (long)(data - start));
+ printf (_(" Entry\tDir\tTime\tSize\tName\n"));
+
+ while (data < end && *data != 0)
+ {
+ unsigned char *name;
+ unsigned int bytes_read;
+
+ printf (" %d\t", ++state_machine_regs.last_file_entry);
+ name = data;
+ data += strnlen ((char *) data, end - data) + 1;
+
+ printf ("%s\t",
+ dwarf_vmatoa ("u", read_uleb128 (data, & bytes_read, end)));
+ data += bytes_read;
+ printf ("%s\t",
+ dwarf_vmatoa ("u", read_uleb128 (data, & bytes_read, end)));
+ data += bytes_read;
+ printf ("%s\t",
+ dwarf_vmatoa ("u", read_uleb128 (data, & bytes_read, end)));
+ data += bytes_read;
+ printf ("%.*s\n", (int)(end - name), name);
+
+ if (data == end)
+ {
+ warn (_("Corrupt file name table entry\n"));
+ break;
+ }
+ }
+ }
+
+ /* Skip the NUL at the end of the table. */
+ *pdata = data + 1;
+}
+
+static int
+display_dir_file_table_v5 (unsigned char *start, unsigned char *end,
+ unsigned char **pdata, char *table_name,
+ unsigned int offset_size)
+{
+ unsigned char *data = *pdata;
+ unsigned int bytes_read;
+ unsigned int format_count;
+ unsigned int *content_types;
+ unsigned int *content_forms;
+ unsigned int entry_count;
+ unsigned int i, j;
+ const unsigned char *name;
+ dwarf_vma offset;
+ unsigned int val;
+
+ format_count = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ content_types = (unsigned int *) xmalloc (format_count *
+ sizeof (unsigned int));
+ content_forms = (unsigned int *) xmalloc (format_count *
+ sizeof (unsigned int));
+ for (j = 0; j < format_count; j++)
+ {
+ content_types[j] = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ content_forms[j] = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ }
+
+ entry_count = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+
+ if (entry_count == 0)
+ printf (_("\n The %s Table is empty.\n"), table_name);
+ else
+ {
+ printf (_("\n The %s Table (offset 0x%lx):\n"),
+ table_name, (long)(data - start));
+
+ printf (_(" Entry"));
+ for (j = 0; j < format_count; j++)
+ {
+ printf ("\t");
+ switch (content_types[j])
+ {
+ case DW_LNCT_path:
+ printf (_("Path"));
+ break;
+ case DW_LNCT_subprogram_name:
+ printf (_("Name"));
+ break;
+ case DW_LNCT_directory_index:
+ printf (_("Dir"));
+ break;
+ case DW_LNCT_decl_file:
+ printf (_("File"));
+ break;
+ case DW_LNCT_decl_line:
+ printf (_("Line"));
+ break;
+ }
+ }
+ printf ("\n");
+ }
+
+ for (i = 0; i < entry_count; i++)
+ {
+ printf (" %d", i + 1);
+ for (j = 0; j < format_count; j++)
+ {
+ if (data >= end)
+ break;
+ switch (content_forms[j])
+ {
+ case DW_FORM_string:
+ printf ("\t%.*s", (int) (end - data), data);
+ data += strnlen ((char *) data, end - data) + 1;
+ break;
+ case DW_FORM_line_strp:
+ SAFE_BYTE_GET_AND_INC (offset, data, offset_size, end);
+ name = fetch_indirect_line_string (offset);
+ printf ("\t%s", name);
+ break;
+ case DW_FORM_udata:
+ val = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ printf ("\t%u", val);
+ break;
+ default:
+ printf ("\t%s", _("(unrecognized FORM code)"));
+ data = end;
+ break;
+ }
+ }
+ printf ("\n");
+
+ /* PR 17512: file: 002-132094-0.004. */
+ if (data >= end - 1)
+ break;
+ }
+
+ free (content_types);
+ free (content_forms);
+
+ *pdata = data;
+ return entry_count;
+}
+
+static void
+display_line_program (unsigned char *start, unsigned char *end,
+ unsigned char **pdata, char *table_name,
+ DWARF2_Internal_LineInfo *linfo,
+ unsigned char *standard_opcodes,
+ int is_logical)
+{
+ unsigned char *data = *pdata;
+
+ if (data >= end)
+ {
+ printf (_(" No %s.\n"), table_name);
+ return;
+ }
+
+ printf (" %s:\n", table_name);
+
+ while (data < end)
+ {
+ unsigned char op_code;
+ dwarf_signed_vma adv;
+ dwarf_vma uladv;
+ unsigned int bytes_read;
+ unsigned int logical;
+ int i;
+
+ printf (" [0x%08lx]", (long)(data - start));
+
+ op_code = *data++;
+
+ if (op_code >= linfo->li_opcode_base)
+ {
+ op_code -= linfo->li_opcode_base;
+ uladv = (op_code / linfo->li_line_range);
+ if (linfo->li_max_ops_per_insn == 1)
+ {
+ uladv *= linfo->li_min_insn_length;
+ state_machine_regs.address += uladv;
+ printf (_(" Special opcode %d: "
+ "advance Address by %s to 0x%s"),
+ op_code, dwarf_vmatoa ("u", uladv),
+ dwarf_vmatoa ("x", state_machine_regs.address));
+ }
+ else
+ {
+ state_machine_regs.address
+ += ((state_machine_regs.op_index + uladv)
+ / linfo->li_max_ops_per_insn)
+ * linfo->li_min_insn_length;
+ state_machine_regs.op_index
+ = (state_machine_regs.op_index + uladv)
+ % linfo->li_max_ops_per_insn;
+ printf (_(" Special opcode %d: "
+ "advance Address by %s to 0x%s[%d]"),
+ op_code, dwarf_vmatoa ("u", uladv),
+ dwarf_vmatoa ("x", state_machine_regs.address),
+ state_machine_regs.op_index);
+ }
+ adv = (op_code % linfo->li_line_range) + linfo->li_line_base;
+ state_machine_regs.line += adv;
+ printf (_(" and Line by %s to %d\n"),
+ dwarf_vmatoa ("d", adv), state_machine_regs.line);
+ if (is_logical)
+ append_logical ();
+ state_machine_regs.discriminator = 0;
+ }
+ else
+ {
+ switch (op_code)
+ {
+ case DW_LNS_extended_op:
+ data += process_extended_line_op (data, linfo->li_default_is_stmt,
+ end, is_logical);
+ break;
+
+ case DW_LNS_copy:
+ printf (_(" Copy\n"));
+ if (is_logical)
+ append_logical ();
+ state_machine_regs.discriminator = 0;
+ break;
+
+ case DW_LNS_advance_pc:
+ uladv = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ if (linfo->li_max_ops_per_insn == 1)
+ {
+ uladv *= linfo->li_min_insn_length;
+ state_machine_regs.address += uladv;
+ printf (_(" Advance PC by %s to 0x%s\n"),
+ dwarf_vmatoa ("u", uladv),
+ dwarf_vmatoa ("x", state_machine_regs.address));
+ }
+ else
+ {
+ state_machine_regs.address
+ += ((state_machine_regs.op_index + uladv)
+ / linfo->li_max_ops_per_insn)
+ * linfo->li_min_insn_length;
+ state_machine_regs.op_index
+ = (state_machine_regs.op_index + uladv)
+ % linfo->li_max_ops_per_insn;
+ printf (_(" Advance PC by %s to 0x%s[%d]\n"),
+ dwarf_vmatoa ("u", uladv),
+ dwarf_vmatoa ("x", state_machine_regs.address),
+ state_machine_regs.op_index);
+ }
+ break;
+
+ case DW_LNS_advance_line:
+ adv = read_sleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ state_machine_regs.line += adv;
+ printf (_(" Advance Line by %s to %d\n"),
+ dwarf_vmatoa ("d", adv),
+ state_machine_regs.line);
+ break;
+
+ case DW_LNS_set_file:
+ adv = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ printf (_(" Set File Name to entry %s in the File Name Table\n"),
+ dwarf_vmatoa ("d", adv));
+ state_machine_regs.file = adv;
+ break;
+
+ case DW_LNS_set_column:
+ uladv = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ printf (_(" Set column to %s\n"),
+ dwarf_vmatoa ("u", uladv));
+ state_machine_regs.column = uladv;
+ break;
+
+ case DW_LNS_negate_stmt:
+ adv = state_machine_regs.is_stmt;
+ adv = ! adv;
+ printf (_(" Set is_stmt to %s\n"), dwarf_vmatoa ("d", adv));
+ state_machine_regs.is_stmt = adv;
+ break;
+
+ case DW_LNS_set_basic_block:
+ printf (_(" Set basic block\n"));
+ state_machine_regs.basic_block = 1;
+ break;
+
+ case DW_LNS_const_add_pc:
+ uladv = ((255 - linfo->li_opcode_base) / linfo->li_line_range);
+ if (linfo->li_max_ops_per_insn)
+ {
+ uladv *= linfo->li_min_insn_length;
+ state_machine_regs.address += uladv;
+ printf (_(" Advance PC by constant %s to 0x%s\n"),
+ dwarf_vmatoa ("u", uladv),
+ dwarf_vmatoa ("x", state_machine_regs.address));
+ }
+ else
+ {
+ state_machine_regs.address
+ += ((state_machine_regs.op_index + uladv)
+ / linfo->li_max_ops_per_insn)
+ * linfo->li_min_insn_length;
+ state_machine_regs.op_index
+ = (state_machine_regs.op_index + uladv)
+ % linfo->li_max_ops_per_insn;
+ printf (_(" Advance PC by constant %s to 0x%s[%d]\n"),
+ dwarf_vmatoa ("u", uladv),
+ dwarf_vmatoa ("x", state_machine_regs.address),
+ state_machine_regs.op_index);
+ }
+ break;
+
+ case DW_LNS_fixed_advance_pc:
+ SAFE_BYTE_GET_AND_INC (uladv, data, 2, end);
+ state_machine_regs.address += uladv;
+ state_machine_regs.op_index = 0;
+ printf (_(" Advance PC by fixed size amount %s to 0x%s\n"),
+ dwarf_vmatoa ("u", uladv),
+ dwarf_vmatoa ("x", state_machine_regs.address));
+ break;
+
+ case DW_LNS_set_prologue_end:
+ printf (_(" Set prologue_end to true\n"));
+ break;
+
+ case DW_LNS_set_epilogue_begin:
+ printf (_(" Set epilogue_begin to true\n"));
+ break;
+
+ case DW_LNS_set_isa:
+ uladv = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ printf (_(" Set ISA to %s\n"), dwarf_vmatoa ("u", uladv));
+ break;
+
+ case DW_LNS_set_subprogram:
+ /* This opcode is aliased with: */
+ /* case DW_LNS_set_address_from_logical: */
+ if (is_logical)
+ {
+ /* DW_LNS_set_subprogram */
+ state_machine_regs.context = 0;
+ state_machine_regs.subprogram = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ printf (_(" Set subprogram to %u and reset context to 0\n"),
+ state_machine_regs.subprogram);
+ }
+ else
+ {
+ /* DW_LNS_set_address_from_logical */
+ adv = read_sleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ state_machine_regs.line += adv;
+ logical = state_machine_regs.line;
+ if (logical - 1 < logicals_count)
+ {
+ state_machine_regs.address = logicals_table[logical - 1].address;
+ state_machine_regs.op_index = logicals_table[logical - 1].op_index;
+ }
+ else
+ warn (_("Logical row number outside range of logicals table\n"));
+ printf (_(" Advance Line by %s to %u and set address from logical to 0x%s[%u]\n"),
+ dwarf_vmatoa ("d", adv),
+ logical,
+ dwarf_vmatoa ("x", state_machine_regs.address),
+ state_machine_regs.op_index);
+ }
+ break;
+
+ case DW_LNS_inlined_call:
+ adv = read_sleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ state_machine_regs.context = logicals_count + adv;
+ state_machine_regs.subprogram = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ printf (_(" Set context to %u and subprogram to %u\n"),
+ state_machine_regs.context,
+ state_machine_regs.subprogram);
+ break;
+
+ case DW_LNS_pop_context:
+ logical = state_machine_regs.context;
+ printf (_(" Pop context to logical %u\n"), logical);
+ if (logical - 1 < logicals_count)
+ {
+ state_machine_regs.file = logicals_table[logical - 1].file;
+ state_machine_regs.line = logicals_table[logical - 1].line;
+ state_machine_regs.column = logicals_table[logical - 1].column;
+ state_machine_regs.discriminator = logicals_table[logical - 1].discriminator;
+ state_machine_regs.is_stmt = logicals_table[logical - 1].is_stmt;
+ state_machine_regs.context = logicals_table[logical - 1].context;
+ state_machine_regs.subprogram = logicals_table[logical - 1].subprogram;
+ }
+ else
+ warn (_("Context register outside range of logicals table\n"));
+ break;
+
+ default:
+ printf (_(" Unknown opcode %d with operands: "), op_code);
+
+ if (standard_opcodes != NULL)
+ for (i = standard_opcodes[op_code - 1]; i > 0 ; --i)
+ {
+ printf ("0x%s%s", dwarf_vmatoa ("x", read_uleb128 (data,
+ &bytes_read, end)),
+ i == 1 ? "" : ", ");
+ data += bytes_read;
+ }
+ putchar ('\n');
+ break;
+ }
+ }
+ }
+
+ putchar ('\n');
+ *pdata = data;
+}
+
static int
display_debug_lines_raw (struct dwarf_section *section,
unsigned char *data,
unsigned char *end)
{
unsigned char *start = section->start;
+ unsigned int initial_length_size;
+ unsigned int offset_size;
printf (_("Raw dump of debug contents of section %s:\n\n"),
section->name);
@@ -2720,10 +3279,15 @@ display_debug_lines_raw (struct dwarf_section *section,
{
static DWARF2_Internal_LineInfo saved_linfo;
DWARF2_Internal_LineInfo linfo;
+ unsigned int logicals_table_offset = 0;
+ unsigned int actuals_table_offset = 0;
+ unsigned char *end_of_header_length;
unsigned char *standard_opcodes;
+ unsigned char *start_of_line_program;
+ unsigned char *end_of_logicals;
unsigned char *end_of_sequence;
- unsigned int last_dir_entry = 0;
int i;
+ unsigned char *hdrptr = NULL;
if (const_strneq (section->name, ".debug_line.")
/* Note: the following does not apply to .debug_line.dwo sections.
@@ -2740,22 +3304,30 @@ display_debug_lines_raw (struct dwarf_section *section,
Since the section is a fragment it does not have the details
needed to fill out a LineInfo structure, so instead we use the
details from the last full debug_line section that we processed. */
+ start_of_line_program = data;
end_of_sequence = end;
+ end_of_logicals = end;
standard_opcodes = NULL;
linfo = saved_linfo;
reset_state_machine (linfo.li_default_is_stmt);
}
else
{
- unsigned char * hdrptr;
-
if ((hdrptr = read_debug_line_header (section, data, end, & linfo,
- & end_of_sequence)) == NULL)
+ & end_of_sequence,
+ & initial_length_size,
+ & offset_size)) == NULL)
return 0;
printf (_(" Offset: 0x%lx\n"), (long)(data - start));
printf (_(" Length: %ld\n"), (long) linfo.li_length);
printf (_(" DWARF Version: %d\n"), linfo.li_version);
+ if (linfo.li_version >= 5
+ && linfo.li_version != DWARF2_LINE_EXPERIMENTAL_VERSION)
+ {
+ printf (_(" Address Size: %u\n"), linfo.li_address_size);
+ printf (_(" Segment Size: %u\n"), linfo.li_segment_size);
+ }
printf (_(" Prologue Length: %d\n"), linfo.li_prologue_length);
printf (_(" Minimum Instruction Length: %d\n"), linfo.li_min_insn_length);
if (linfo.li_version >= 4)
@@ -2765,6 +3337,13 @@ display_debug_lines_raw (struct dwarf_section *section,
printf (_(" Line Range: %d\n"), linfo.li_line_range);
printf (_(" Opcode Base: %d\n"), linfo.li_opcode_base);
+ end_of_header_length = data + initial_length_size + 2 + offset_size;
+ if (linfo.li_version >= 5
+ && linfo.li_version != DWARF2_LINE_EXPERIMENTAL_VERSION)
+ end_of_header_length += 2;
+ start_of_line_program = end_of_header_length + linfo.li_prologue_length;
+ end_of_logicals = end;
+
reset_state_machine (linfo.li_default_is_stmt);
/* Display the contents of the Opcodes table. */
@@ -2775,261 +3354,100 @@ display_debug_lines_raw (struct dwarf_section *section,
for (i = 1; i < linfo.li_opcode_base; i++)
printf (_(" Opcode %d has %d args\n"), i, standard_opcodes[i - 1]);
- /* Display the contents of the Directory table. */
data = standard_opcodes + linfo.li_opcode_base - 1;
- if (*data == 0)
- printf (_("\n The Directory Table is empty.\n"));
- else
+ if (linfo.li_version == DWARF2_LINE_EXPERIMENTAL_VERSION)
{
- printf (_("\n The Directory Table (offset 0x%lx):\n"),
- (long)(data - start));
+ /* Skip the fake directory and filename table. */
+ data += 2;
- while (*data != 0)
- {
- printf (" %d\t%s\n", ++last_dir_entry, data);
+ /* Skip the fake extended opcode that wraps the rest
+ of the section. */
+ data += 5;
- data += strnlen ((char *) data, end - data) + 1;
- }
- }
+ /* Read the logicals table offset and actuals table offset. */
+ SAFE_BYTE_GET_AND_INC (logicals_table_offset, data, offset_size, end);
+ SAFE_BYTE_GET_AND_INC (actuals_table_offset, data, offset_size, end);
- /* Skip the NUL at the end of the table. */
- data++;
+ start_of_line_program = end_of_header_length + logicals_table_offset;
- /* Display the contents of the File Name table. */
- if (*data == 0)
- printf (_("\n The File Name Table is empty.\n"));
- else
- {
- printf (_("\n The File Name Table (offset 0x%lx):\n"),
- (long)(data - start));
- printf (_(" Entry\tDir\tTime\tSize\tName\n"));
+ if (actuals_table_offset > 0)
+ end_of_logicals = end_of_header_length + actuals_table_offset;
- while (*data != 0)
- {
- unsigned char *name;
- unsigned int bytes_read;
+ putchar ('\n');
+ printf (_(" Logicals Table Offset: 0x%x\n"), logicals_table_offset);
+ printf (_(" Actuals Table Offset: 0x%x\n"), actuals_table_offset);
+ }
- printf (" %d\t", ++state_machine_regs.last_file_entry);
- name = data;
- data += strnlen ((char *) data, end - data) + 1;
+ /* Display the contents of the Directory table. */
+ if (linfo.li_version >= 5)
+ display_dir_file_table_v5 (start, end, &data, _("Directory"),
+ offset_size);
+ else
+ display_directory_table_v4 (start, end, &data);
- printf ("%s\t",
- dwarf_vmatoa ("u", read_uleb128 (data, & bytes_read, end)));
- data += bytes_read;
- printf ("%s\t",
- dwarf_vmatoa ("u", read_uleb128 (data, & bytes_read, end)));
- data += bytes_read;
- printf ("%s\t",
- dwarf_vmatoa ("u", read_uleb128 (data, & bytes_read, end)));
- data += bytes_read;
- printf ("%s\n", name);
+ /* PR 17512: file: 002-132094-0.004. */
+ if (data >= end - 1)
+ break;
- if (data == end)
- {
- warn (_("Corrupt file name table entry\n"));
- break;
- }
- }
+ /* Display the contents of the File Name table. */
+ if (linfo.li_version >= 5)
+ {
+ unsigned int count;
+
+ count = display_dir_file_table_v5 (start, end, &data,
+ _("File Name"), offset_size);
+ state_machine_regs.last_file_entry = count - 1;
}
+ else
+ display_file_name_table_v4 (start, end, &data);
+
+ /* Display the contents of the Subprogram table. */
+ if (linfo.li_version == DWARF2_LINE_EXPERIMENTAL_VERSION)
+ display_dir_file_table_v5 (start, end, &data, _("Subprogram"),
+ offset_size);
- /* Skip the NUL at the end of the table. */
- data++;
putchar ('\n');
saved_linfo = linfo;
}
- /* Now display the statements. */
- if (data >= end_of_sequence)
- printf (_(" No Line Number Statements.\n"));
- else
- {
- printf (_(" Line Number Statements:\n"));
+ if (data > start_of_line_program)
+ warn (_("Line table header is longer than header_length indicates\n"));
+ else if (data < start_of_line_program)
+ warn (_("Line table header is shorter than header_length indicates\n"));
+ data = start_of_line_program;
- while (data < end_of_sequence)
+ if (linfo.li_version == DWARF2_LINE_EXPERIMENTAL_VERSION
+ && hdrptr != NULL
+ && actuals_table_offset > 0)
+ {
+ if (end_of_logicals > end)
{
- unsigned char op_code;
- dwarf_signed_vma adv;
- dwarf_vma uladv;
- unsigned int bytes_read;
-
- printf (" [0x%08lx]", (long)(data - start));
-
- op_code = *data++;
-
- if (op_code >= linfo.li_opcode_base)
- {
- op_code -= linfo.li_opcode_base;
- uladv = (op_code / linfo.li_line_range);
- if (linfo.li_max_ops_per_insn == 1)
- {
- uladv *= linfo.li_min_insn_length;
- state_machine_regs.address += uladv;
- printf (_(" Special opcode %d: "
- "advance Address by %s to 0x%s"),
- op_code, dwarf_vmatoa ("u", uladv),
- dwarf_vmatoa ("x", state_machine_regs.address));
- }
- else
- {
- state_machine_regs.address
- += ((state_machine_regs.op_index + uladv)
- / linfo.li_max_ops_per_insn)
- * linfo.li_min_insn_length;
- state_machine_regs.op_index
- = (state_machine_regs.op_index + uladv)
- % linfo.li_max_ops_per_insn;
- printf (_(" Special opcode %d: "
- "advance Address by %s to 0x%s[%d]"),
- op_code, dwarf_vmatoa ("u", uladv),
- dwarf_vmatoa ("x", state_machine_regs.address),
- state_machine_regs.op_index);
- }
- adv = (op_code % linfo.li_line_range) + linfo.li_line_base;
- state_machine_regs.line += adv;
- printf (_(" and Line by %s to %d\n"),
- dwarf_vmatoa ("d", adv), state_machine_regs.line);
- }
- else switch (op_code)
- {
- case DW_LNS_extended_op:
- data += process_extended_line_op (data, linfo.li_default_is_stmt, end);
- break;
-
- case DW_LNS_copy:
- printf (_(" Copy\n"));
- break;
-
- case DW_LNS_advance_pc:
- uladv = read_uleb128 (data, & bytes_read, end);
- data += bytes_read;
- if (linfo.li_max_ops_per_insn == 1)
- {
- uladv *= linfo.li_min_insn_length;
- state_machine_regs.address += uladv;
- printf (_(" Advance PC by %s to 0x%s\n"),
- dwarf_vmatoa ("u", uladv),
- dwarf_vmatoa ("x", state_machine_regs.address));
- }
- else
- {
- state_machine_regs.address
- += ((state_machine_regs.op_index + uladv)
- / linfo.li_max_ops_per_insn)
- * linfo.li_min_insn_length;
- state_machine_regs.op_index
- = (state_machine_regs.op_index + uladv)
- % linfo.li_max_ops_per_insn;
- printf (_(" Advance PC by %s to 0x%s[%d]\n"),
- dwarf_vmatoa ("u", uladv),
- dwarf_vmatoa ("x", state_machine_regs.address),
- state_machine_regs.op_index);
- }
- break;
-
- case DW_LNS_advance_line:
- adv = read_sleb128 (data, & bytes_read, end);
- data += bytes_read;
- state_machine_regs.line += adv;
- printf (_(" Advance Line by %s to %d\n"),
- dwarf_vmatoa ("d", adv),
- state_machine_regs.line);
- break;
-
- case DW_LNS_set_file:
- adv = read_uleb128 (data, & bytes_read, end);
- data += bytes_read;
- printf (_(" Set File Name to entry %s in the File Name Table\n"),
- dwarf_vmatoa ("d", adv));
- state_machine_regs.file = adv;
- break;
-
- case DW_LNS_set_column:
- uladv = read_uleb128 (data, & bytes_read, end);
- data += bytes_read;
- printf (_(" Set column to %s\n"),
- dwarf_vmatoa ("u", uladv));
- state_machine_regs.column = uladv;
- break;
-
- case DW_LNS_negate_stmt:
- adv = state_machine_regs.is_stmt;
- adv = ! adv;
- printf (_(" Set is_stmt to %s\n"), dwarf_vmatoa ("d", adv));
- state_machine_regs.is_stmt = adv;
- break;
-
- case DW_LNS_set_basic_block:
- printf (_(" Set basic block\n"));
- state_machine_regs.basic_block = 1;
- break;
-
- case DW_LNS_const_add_pc:
- uladv = ((255 - linfo.li_opcode_base) / linfo.li_line_range);
- if (linfo.li_max_ops_per_insn)
- {
- uladv *= linfo.li_min_insn_length;
- state_machine_regs.address += uladv;
- printf (_(" Advance PC by constant %s to 0x%s\n"),
- dwarf_vmatoa ("u", uladv),
- dwarf_vmatoa ("x", state_machine_regs.address));
- }
- else
- {
- state_machine_regs.address
- += ((state_machine_regs.op_index + uladv)
- / linfo.li_max_ops_per_insn)
- * linfo.li_min_insn_length;
- state_machine_regs.op_index
- = (state_machine_regs.op_index + uladv)
- % linfo.li_max_ops_per_insn;
- printf (_(" Advance PC by constant %s to 0x%s[%d]\n"),
- dwarf_vmatoa ("u", uladv),
- dwarf_vmatoa ("x", state_machine_regs.address),
- state_machine_regs.op_index);
- }
- break;
-
- case DW_LNS_fixed_advance_pc:
- SAFE_BYTE_GET_AND_INC (uladv, data, 2, end);
- state_machine_regs.address += uladv;
- state_machine_regs.op_index = 0;
- printf (_(" Advance PC by fixed size amount %s to 0x%s\n"),
- dwarf_vmatoa ("u", uladv),
- dwarf_vmatoa ("x", state_machine_regs.address));
- break;
-
- case DW_LNS_set_prologue_end:
- printf (_(" Set prologue_end to true\n"));
- break;
-
- case DW_LNS_set_epilogue_begin:
- printf (_(" Set epilogue_begin to true\n"));
- break;
-
- case DW_LNS_set_isa:
- uladv = read_uleb128 (data, & bytes_read, end);
- data += bytes_read;
- printf (_(" Set ISA to %s\n"), dwarf_vmatoa ("u", uladv));
- break;
-
- default:
- printf (_(" Unknown opcode %d with operands: "), op_code);
-
- if (standard_opcodes != NULL)
- for (i = standard_opcodes[op_code - 1]; i > 0 ; --i)
- {
- printf ("0x%s%s", dwarf_vmatoa ("x", read_uleb128 (data,
- &bytes_read, end)),
- i == 1 ? "" : ", ");
- data += bytes_read;
- }
- putchar ('\n');
- break;
- }
+ warn (_("Actuals table offset %s extends beyond end of section\n"),
+ dwarf_vmatoa ("u", actuals_table_offset));
+ end_of_logicals = end;
}
- putchar ('\n');
- }
+ display_line_program (start, end_of_logicals, &data,
+ _("Logicals Statements"),
+ &linfo, standard_opcodes, 1);
+ if (data > end_of_logicals)
+ warn (_("Logicals table is longer than actuals_table_offset indicates\n"));
+ else if (data < end_of_logicals)
+ warn (_("Line table header is shorter than actuals_table_offset indicates\n"));
+ data = end_of_logicals;
+ reset_state_machine (linfo.li_default_is_stmt);
+ display_line_program (start, end_of_sequence, &data,
+ _("Actuals Statements"),
+ &linfo, standard_opcodes, 0);
+ free_logicals ();
+ }
+ else
+ {
+ display_line_program (start, end_of_sequence, &data,
+ _("Line Number Statements"),
+ &linfo, standard_opcodes, 0);
+ }
+
}
return 1;
@@ -3051,6 +3469,8 @@ display_debug_lines_decoded (struct dwarf_section *section,
unsigned char *end)
{
static DWARF2_Internal_LineInfo saved_linfo;
+ unsigned int initial_length_size;
+ unsigned int offset_size;
printf (_("Decoded dump of debug contents of section %s:\n\n"),
section->name);
@@ -3083,7 +3503,9 @@ display_debug_lines_decoded (struct dwarf_section *section,
unsigned char *hdrptr;
if ((hdrptr = read_debug_line_header (section, data, end, & linfo,
- & end_of_sequence)) == NULL)
+ & end_of_sequence,
+ & initial_length_size,
+ & offset_size)) == NULL)
return 0;
reset_state_machine (linfo.li_default_is_stmt);
@@ -3501,7 +3923,7 @@ display_debug_lines_decoded (struct dwarf_section *section,
}
static int
-display_debug_lines (struct dwarf_section *section, void *file ATTRIBUTE_UNUSED)
+display_debug_lines (struct dwarf_section *section, void *file)
{
unsigned char *data = section->start;
unsigned char *end = data + section->size;
@@ -3511,6 +3933,8 @@ display_debug_lines (struct dwarf_section *section, void *file ATTRIBUTE_UNUSED)
if (do_debug_lines == 0)
do_debug_lines |= FLAG_DEBUG_LINES_RAW;
+ load_debug_section (line_str, file);
+
if (do_debug_lines & FLAG_DEBUG_LINES_RAW)
retValRaw = display_debug_lines_raw (section, data, end);
@@ -7045,6 +7469,8 @@ struct dwarf_section_display debug_displays[] =
display_debug_macro, &do_debug_macinfo, 1 },
{ { ".debug_str", ".zdebug_str", NULL, NULL, 0, 0, 0 },
display_debug_str, &do_debug_str, 0 },
+ { { ".debug_line_str", ".zdebug_line_str", NULL, NULL, 0, 0, 0 },
+ display_debug_str, &do_debug_str, 0 },
{ { ".debug_loc", ".zdebug_loc", NULL, NULL, 0, 0, 0 },
display_debug_loc, &do_debug_loc, 1 },
{ { ".debug_pubtypes", ".zdebug_pubtypes", NULL, NULL, 0, 0, 0 },
diff --git a/binutils-2.25/binutils/dwarf.h b/binutils-2.25/binutils/dwarf.h
index 124d9d6..2a71083 100644
--- a/binutils-2.25/binutils/dwarf.h
+++ b/binutils-2.25/binutils/dwarf.h
@@ -40,6 +40,8 @@ typedef struct
{
dwarf_vma li_length;
unsigned short li_version;
+ unsigned char li_address_size;
+ unsigned char li_segment_size;
unsigned int li_prologue_length;
unsigned char li_min_insn_length;
unsigned char li_max_ops_per_insn;
@@ -123,6 +125,7 @@ enum dwarf_section_display_enum
macinfo,
macro,
str,
+ line_str,
loc,
pubtypes,
gnu_pubtypes,
diff --git a/binutils-2.25/binutils/readelf.c b/binutils-2.25/binutils/readelf.c
index d630684..83518c7 100644
--- a/binutils-2.25/binutils/readelf.c
+++ b/binutils-2.25/binutils/readelf.c
@@ -5319,6 +5319,7 @@ process_section_headers (FILE * file)
|| (do_debug_macinfo && const_strneq (name, "macinfo"))
|| (do_debug_macinfo && const_strneq (name, "macro"))
|| (do_debug_str && const_strneq (name, "str"))
+ || (do_debug_str && const_strneq (name, "line_str"))
|| (do_debug_loc && const_strneq (name, "loc"))
|| (do_debug_addr && const_strneq (name, "addr"))
|| (do_debug_cu_index && const_strneq (name, "cu_index"))
@@ -11903,7 +11904,7 @@ static const char * arm_attr_tag_ABI_enum_size[] =
static const char * arm_attr_tag_ABI_HardFP_use[] =
{"As Tag_FP_arch", "SP only", "DP only", "SP and DP"};
static const char * arm_attr_tag_ABI_VFP_args[] =
- {"AAPCS", "VFP registers", "custom"};
+ {"AAPCS", "VFP registers", "custom", "compatible"};
static const char * arm_attr_tag_ABI_WMMX_args[] =
{"AAPCS", "WMMX registers", "custom"};
static const char * arm_attr_tag_ABI_optimization_goals[] =
@@ -13162,6 +13163,9 @@ print_mips_isa_ext (unsigned int isa_ext)
case AFL_EXT_XLR:
fputs ("RMI XLR", stdout);
break;
+ case AFL_EXT_OCTEON3:
+ fputs ("Cavium Networks Octeon3", stdout);
+ break;
case AFL_EXT_OCTEON2:
fputs ("Cavium Networks Octeon2", stdout);
break;
diff --git a/binutils-2.25/compile b/binutils-2.25/compile
index ec64c62..a85b723 100755
--- a/binutils-2.25/compile
+++ b/binutils-2.25/compile
@@ -1,10 +1,9 @@
#! /bin/sh
-# Wrapper for compilers which do not understand `-c -o'.
+# Wrapper for compilers which do not understand '-c -o'.
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-10-14.11; # UTC
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software
-# Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
@@ -29,21 +28,224 @@ scriptversion=2009-04-28.21; # UTC
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
+nl='
+'
+
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" "" $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+ file=$1
+ case $file in
+ / | /[!/]*) # absolute file, and not a UNC file
+ if test -z "$file_conv"; then
+ # lazily determine how to convert abs files
+ case `uname -s` in
+ MINGW*)
+ file_conv=mingw
+ ;;
+ CYGWIN*)
+ file_conv=cygwin
+ ;;
+ *)
+ file_conv=wine
+ ;;
+ esac
+ fi
+ case $file_conv/,$2, in
+ *,$file_conv,*)
+ ;;
+ mingw/*)
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+ ;;
+ cygwin/*)
+ file=`cygpath -m "$file" || echo "$file"`
+ ;;
+ wine/*)
+ file=`winepath -w "$file" || echo "$file"`
+ ;;
+ esac
+ ;;
+ esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+ func_file_conv "$1"
+ if test -z "$lib_path"; then
+ lib_path=$file
+ else
+ lib_path="$lib_path;$file"
+ fi
+ linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+ lib=$1
+ found=no
+ save_IFS=$IFS
+ IFS=';'
+ for dir in $lib_path $LIB
+ do
+ IFS=$save_IFS
+ if $shared && test -f "$dir/$lib.dll.lib"; then
+ found=yes
+ lib=$dir/$lib.dll.lib
+ break
+ fi
+ if test -f "$dir/$lib.lib"; then
+ found=yes
+ lib=$dir/$lib.lib
+ break
+ fi
+ if test -f "$dir/lib$lib.a"; then
+ found=yes
+ lib=$dir/lib$lib.a
+ break
+ fi
+ done
+ IFS=$save_IFS
+
+ if test "$found" != yes; then
+ lib=$lib.lib
+ fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+ # Assume a capable shell
+ lib_path=
+ shared=:
+ linker_opts=
+ for arg
+ do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ eat=1
+ case $2 in
+ *.o | *.[oO][bB][jJ])
+ func_file_conv "$2"
+ set x "$@" -Fo"$file"
+ shift
+ ;;
+ *)
+ func_file_conv "$2"
+ set x "$@" -Fe"$file"
+ shift
+ ;;
+ esac
+ ;;
+ -I)
+ eat=1
+ func_file_conv "$2" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -I*)
+ func_file_conv "${1#-I}" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -l)
+ eat=1
+ func_cl_dashl "$2"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -l*)
+ func_cl_dashl "${1#-l}"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -L)
+ eat=1
+ func_cl_dashL "$2"
+ ;;
+ -L*)
+ func_cl_dashL "${1#-L}"
+ ;;
+ -static)
+ shared=false
+ ;;
+ -Wl,*)
+ arg=${1#-Wl,}
+ save_ifs="$IFS"; IFS=','
+ for flag in $arg; do
+ IFS="$save_ifs"
+ linker_opts="$linker_opts $flag"
+ done
+ IFS="$save_ifs"
+ ;;
+ -Xlinker)
+ eat=1
+ linker_opts="$linker_opts $2"
+ ;;
+ -*)
+ set x "$@" "$1"
+ shift
+ ;;
+ *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+ func_file_conv "$1"
+ set x "$@" -Tp"$file"
+ shift
+ ;;
+ *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+ func_file_conv "$1" mingw
+ set x "$@" "$file"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+ done
+ if test -n "$linker_opts"; then
+ linker_opts="-link$linker_opts"
+ fi
+ exec "$@" $linker_opts
+ exit 1
+}
+
+eat=
+
case $1 in
'')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
-Wrapper for compilers which do not understand `-c -o'.
-Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
-right script to run: please start by reading the file `INSTALL'.
+right script to run: please start by reading the file 'INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
@@ -53,11 +255,13 @@ EOF
echo "compile $scriptversion"
exit $?
;;
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+ func_cl_wrapper "$@" # Doesn't return...
+ ;;
esac
ofile=
cfile=
-eat=
for arg
do
@@ -66,8 +270,8 @@ do
else
case $1 in
-o)
- # configure might choose to run compile as `compile cc -o foo foo.c'.
- # So we strip `-o arg' only if arg is an object.
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ # So we strip '-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
@@ -94,10 +298,10 @@ do
done
if test -z "$ofile" || test -z "$cfile"; then
- # If no `-o' option was seen then we might have been invoked from a
+ # If no '-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
- # `.c' file was seen then we are probably linking. That is also
+ # '.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
@@ -106,7 +310,7 @@ fi
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
-# Note: use `[/\\:.-]' here to ensure that we don't use the same name
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
@@ -124,9 +328,9 @@ trap "rmdir '$lockdir'; exit 1" 1 2 15
ret=$?
if test -f "$cofile"; then
- mv "$cofile" "$ofile"
+ test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
- mv "${cofile}bj" "$ofile"
+ test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
diff --git a/binutils-2.25/config.guess b/binutils-2.25/config.guess
index 1f5c50c..6c32c86 100755
--- a/binutils-2.25/config.guess
+++ b/binutils-2.25/config.guess
@@ -2,7 +2,7 @@
# Attempt to guess a canonical system name.
# Copyright 1992-2014 Free Software Foundation, Inc.
-timestamp='2014-03-23'
+timestamp='2014-11-04'
# 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
@@ -24,12 +24,12 @@ timestamp='2014-03-23'
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
#
-# Originally written by Per Bothner.
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
#
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to <config-patches@gnu.org>.
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -579,8 +579,9 @@ EOF
else
IBM_ARCH=powerpc
fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
+ if [ -x /usr/bin/lslpp ] ; then
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
diff --git a/binutils-2.25/config.sub b/binutils-2.25/config.sub
index 88a0cb4..7cc68ba 100755
--- a/binutils-2.25/config.sub
+++ b/binutils-2.25/config.sub
@@ -2,7 +2,7 @@
# Configuration validation subroutine script.
# Copyright 1992-2014 Free Software Foundation, Inc.
-timestamp='2014-07-28'
+timestamp='2014-09-26'
# 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
@@ -25,7 +25,7 @@ timestamp='2014-07-28'
# of the GNU General Public License, version 3 ("GPLv3").
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to <config-patches@gnu.org>.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
@@ -302,6 +302,7 @@ case $basic_machine in
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
+ | riscv32 | riscv64 \
| rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
@@ -326,6 +327,9 @@ case $basic_machine in
c6x)
basic_machine=tic6x-unknown
;;
+ leon|leon[3-9])
+ basic_machine=sparc-$basic_machine
+ ;;
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown
os=-none
@@ -773,6 +777,9 @@ case $basic_machine in
basic_machine=m68k-isi
os=-sysv
;;
+ leon-*|leon[3-9]-*)
+ basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
+ ;;
m68knommu)
basic_machine=m68k-unknown
os=-linux
diff --git a/binutils-2.25/configure b/binutils-2.25/configure
index 87677bc..b86cfe6 100755
--- a/binutils-2.25/configure
+++ b/binutils-2.25/configure
@@ -2972,7 +2972,7 @@ case "${ENABLE_GOLD}" in
# Check for target supported by gold.
case "${target}" in
i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \
- | aarch64*-*-* | tilegx*-*-*)
+ | aarch64*-*-* | tilegx*-*-* | mips*-*-*)
configdirs="$configdirs gold"
if test x${ENABLE_GOLD} = xdefault; then
default_ld=gold
diff --git a/binutils-2.25/configure.ac b/binutils-2.25/configure.ac
index 4bb4865..9316eb9 100644
--- a/binutils-2.25/configure.ac
+++ b/binutils-2.25/configure.ac
@@ -332,7 +332,7 @@ case "${ENABLE_GOLD}" in
# Check for target supported by gold.
case "${target}" in
i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \
- | aarch64*-*-* | tilegx*-*-*)
+ | aarch64*-*-* | tilegx*-*-* | mips*-*-*)
configdirs="$configdirs gold"
if test x${ENABLE_GOLD} = xdefault; then
default_ld=gold
diff --git a/binutils-2.25/depcomp b/binutils-2.25/depcomp
index df8eea7..4e70ff0 100755
--- a/binutils-2.25/depcomp
+++ b/binutils-2.25/depcomp
@@ -1,10 +1,9 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2013-05-30.07; # UTC
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
+# Copyright (C) 1999-2014 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
@@ -28,9 +27,9 @@ scriptversion=2009-04-28.21; # UTC
case $1 in
'')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
- exit 1;
- ;;
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
@@ -40,11 +39,11 @@ as side-effects.
Environment variables:
depmode Dependency tracking mode.
- source Source file read by `PROGRAMS ARGS'.
- object Object file output by `PROGRAMS ARGS'.
+ source Source file read by 'PROGRAMS ARGS'.
+ object Object file output by 'PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
- tmpdepfile Temporary file to use when outputing dependencies.
+ tmpdepfile Temporary file to use when outputting dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
@@ -57,6 +56,66 @@ EOF
;;
esac
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'. Note that this directory component will
+# be either empty or ending with a '/' character. This is deliberate.
+set_dir_from ()
+{
+ case $1 in
+ */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+ *) dir=;;
+ esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+ base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+ echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+ # If the compiler actually managed to produce a dependency file,
+ # post-process it.
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form 'foo.o: dependency.h'.
+ # Do two passes, one to just change these to
+ # $object: dependency.h
+ # and one to simply output
+ # dependency.h:
+ # which is needed to avoid the deleted-header problem.
+ { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+ sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+ } > "$depfile"
+ rm -f "$tmpdepfile"
+ else
+ make_dummy_depfile
+ fi
+}
+
+# A tabulation character.
+tab=' '
+# A newline character.
+nl='
+'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
+
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
@@ -69,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
@@ -80,18 +142,32 @@ if test "$depmode" = hp; then
fi
if test "$depmode" = dashXmstdout; then
- # This is just like dashmstdout with a different argument.
- dashmflag=-xM
- depmode=dashmstdout
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
fi
cygpath_u="cygpath -u -f -"
if test "$depmode" = msvcmsys; then
- # This is just like msvisualcpp but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u="sed s,\\\\\\\\,/,g"
- depmode=msvisualcpp
+ # This is just like msvisualcpp but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+ # This is just like msvc7 but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+ gccflag=-qmakedep=gcc,-MF
+ depmode=gcc
fi
case "$depmode" in
@@ -114,8 +190,7 @@ gcc3)
done
"$@"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
@@ -123,13 +198,17 @@ gcc3)
;;
gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-## -MM, not -M (despite what the docs say).
+## -MM, not -M (despite what the docs say). Also, it might not be
+## supported by the other compilers which use the 'gcc' depmode.
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
@@ -137,31 +216,31 @@ gcc)
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
+ # The second -e expression handles DOS-style file names with drive
+ # letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
+## This next piece of magic avoids the "deleted header file" problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
- tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'. On the theory
+## Some versions of gcc put a space before the ':'. On the theory
## that the space means something, we add a space to the output as
-## well.
+## well. hp depmode also adds that space, but also prefixes the VPATH
+## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -172,59 +251,21 @@ hp)
exit 1
;;
-sgi)
- if test "$libtool" = yes; then
- "$@" "-Wp,-MDupdate,$tmpdepfile"
- else
- "$@" -MDupdate "$tmpdepfile"
- fi
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
-
- if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
- echo "$object : \\" > "$depfile"
-
- # Clip off the initial element (the dependent). Don't try to be
- # clever and replace this with sed code, as IRIX sed won't handle
- # lines with more than a fixed number of characters (4096 in
- # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like `#:fec' to the end of the
- # dependency line.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr '
-' ' ' >> "$depfile"
- echo >> "$depfile"
-
- # The second pass generates a dummy entry for each header file.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
+xlc)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
- # current directory. Also, the AIX compiler puts `$object:' at the
+ # current directory. Also, the AIX compiler puts '$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ set_dir_from "$object"
+ set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
@@ -237,9 +278,7 @@ aix)
"$@" -M
fi
stat=$?
-
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
@@ -248,44 +287,100 @@ aix)
do
test -f "$tmpdepfile" && break
done
- if test -f "$tmpdepfile"; then
- # Each line is of the form `foo.o: dependent.h'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
+ aix_post_process_depfile
+ ;;
+
+tcc)
+ # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+ # FIXME: That version still under development at the moment of writing.
+ # Make that this statement remains true also for stable, released
+ # versions.
+ # It will wrap lines (doesn't matter whether long or short) with a
+ # trailing '\', as in:
+ #
+ # foo.o : \
+ # foo.c \
+ # foo.h \
+ #
+ # It will put a trailing '\' even on the last line, and will use leading
+ # spaces rather than leading tabs (at least since its commit 0394caf7
+ # "Emit spaces for -MD").
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
fi
+ rm -f "$depfile"
+ # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+ # We have to change lines of the first kind to '$object: \'.
+ sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+ # And for each line of the second kind, we have to emit a 'dep.h:'
+ # dummy dependency, to avoid the deleted-header problem.
+ sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
rm -f "$tmpdepfile"
;;
-icc)
- # Intel's C compiler understands `-MD -MF file'. However on
- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
- # ICC 7.0 will fill foo.d with something like
- # foo.o: sub/foo.c
- # foo.o: sub/foo.h
- # which is wrong. We want:
- # sub/foo.o: sub/foo.c
- # sub/foo.o: sub/foo.h
- # sub/foo.c:
- # sub/foo.h:
- # ICC 7.1 will output
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file. A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+ # Portland's C compiler understands '-MD'.
+ # Will always output deps to 'file.d' where file is the root name of the
+ # source file under compilation, even if file resides in a subdirectory.
+ # The object file name does not affect the name of the '.d' file.
+ # pgcc 10.2 will output
# foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using \ :
+ # and will wrap long lines using '\' :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
+ set_dir_from "$object"
+ # Use the source, not the object, to determine the base name, since
+ # that's sadly what pgcc will do too.
+ set_base_from "$source"
+ tmpdepfile=$base.d
+
+ # For projects that build the same source file twice into different object
+ # files, the pgcc approach of using the *source* file root name can cause
+ # problems in parallel builds. Use a locking strategy to avoid stomping on
+ # the same $tmpdepfile.
+ lockdir=$base.d-lock
+ trap "
+ echo '$0: caught signal, cleaning up...' >&2
+ rmdir '$lockdir'
+ exit 1
+ " 1 2 13 15
+ numtries=100
+ i=$numtries
+ while test $i -gt 0; do
+ # mkdir is a portable test-and-set.
+ if mkdir "$lockdir" 2>/dev/null; then
+ # This process acquired the lock.
+ "$@" -MD
+ stat=$?
+ # Release the lock.
+ rmdir "$lockdir"
+ break
+ else
+ # If the lock is being held by a different process, wait
+ # until the winning process is done or we timeout.
+ while test -d "$lockdir" && test $i -gt 0; do
+ sleep 1
+ i=`expr $i - 1`
+ done
+ fi
+ i=`expr $i - 1`
+ done
+ trap - 1 2 13 15
+ if test $i -le 0; then
+ echo "$0: failed to acquire lock after $numtries attempts" >&2
+ echo "$0: check lockdir '$lockdir'" >&2
+ exit 1
+ fi
- "$@" -MD -MF "$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
@@ -297,8 +392,8 @@ icc)
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
- sed -e 's/$/ :/' >> "$depfile"
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -309,9 +404,8 @@ hp2)
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ set_dir_from "$object"
+ set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
@@ -322,8 +416,7 @@ hp2)
"$@" +Maked
fi
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
@@ -333,77 +426,107 @@ hp2)
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
- # Add `dependent.h:' lines.
+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add 'dependent.h:' lines.
sed -ne '2,${
- s/^ *//
- s/ \\*$//
- s/$/:/
- p
- }' "$tmpdepfile" >> "$depfile"
+ s/^ *//
+ s/ \\*$//
+ s/$/:/
+ p
+ }' "$tmpdepfile" >> "$depfile"
else
- echo "#dummy" > "$depfile"
+ make_dummy_depfile
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
- # The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in `foo.d' instead, so we check for that too.
- # Subdirectories are respected.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
- if test "$libtool" = yes; then
- # With Tru64 cc, shared objects can also be used to make a
- # static library. This mechanism is used in libtool 1.4 series to
- # handle both shared and static libraries in a single compilation.
- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
- #
- # With libtool 1.5 this exception was removed, and libtool now
- # generates 2 separate objects for the 2 libraries. These two
- # compilations output dependencies in $dir.libs/$base.o.d and
- # in $dir$base.o.d. We have to check for both files, because
- # one of the two compilations can be disabled. We should prefer
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
- # automatically cleaned when .libs/ is deleted, while ignoring
- # the former would cause a distcleancheck panic.
- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
- tmpdepfile2=$dir$base.o.d # libtool 1.5
- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
- "$@" -Wc,-MD
- else
- tmpdepfile1=$dir$base.o.d
- tmpdepfile2=$dir$base.d
- tmpdepfile3=$dir$base.d
- tmpdepfile4=$dir$base.d
- "$@" -MD
- fi
-
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in 'foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ set_dir_from "$object"
+ set_base_from "$object"
+
+ if test "$libtool" = yes; then
+ # Libtool generates 2 separate objects for the 2 libraries. These
+ # two compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir$base.o.d # libtool 1.5
+ tmpdepfile2=$dir.libs/$base.o.d # Likewise.
+ tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ # Same post-processing that is required for AIX mode.
+ aix_post_process_depfile
+ ;;
+
+msvc7)
+ if test "$libtool" = yes; then
+ showIncludes=-Wc,-showIncludes
+ else
+ showIncludes=-showIncludes
+ fi
+ "$@" $showIncludes > "$tmpdepfile"
+ stat=$?
+ grep -v '^Note: including file: ' "$tmpdepfile"
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ # The first sed program below extracts the file names and escapes
+ # backslashes for cygpath. The second sed program outputs the file
+ # name when reading, but also accumulates all include files in the
+ # hold buffer in order to output them again at the end. This only
+ # works with sed implementations that can handle large buffers.
+ sed < "$tmpdepfile" -n '
+/^Note: including file: *\(.*\)/ {
+ s//\1/
+ s/\\/\\\\/g
+ p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+ s/.*/'"$tab"'/
+ G
+ p
+}' >> "$depfile"
+ echo >> "$depfile" # make sure the fragment doesn't end with a backslash
+ rm -f "$tmpdepfile"
+ ;;
+
+msvc7msys)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
@@ -422,7 +545,7 @@ dashmstdout)
shift
fi
- # Remove `-o $object'.
+ # Remove '-o $object'.
IFS=" "
for arg
do
@@ -442,18 +565,18 @@ dashmstdout)
done
test -z "$dashmflag" && dashmflag=-M
- # Require at least two characters before searching for `:'
+ # Require at least two characters before searching for ':'
# in the target name. This is to cope with DOS-style filenames:
- # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+ # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
"$@" $dashmflag |
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
- tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this sed invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -503,12 +626,15 @@ makedepend)
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ # makedepend may prepend the VPATH from the source file name to the object.
+ # No need to regex-escape $object, excess matching of '.' is harmless.
+ sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process the last invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed '1,2d' "$tmpdepfile" \
+ | tr ' ' "$nl" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
@@ -525,7 +651,7 @@ cpp)
shift
fi
- # Remove `-o $object'.
+ # Remove '-o $object'.
IFS=" "
for arg
do
@@ -544,10 +670,10 @@ cpp)
esac
done
- "$@" -E |
- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
- sed '$ s: \\$::' > "$tmpdepfile"
+ "$@" -E \
+ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ | sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
@@ -579,23 +705,23 @@ msvisualcpp)
shift
;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
- set fnord "$@"
- shift
- shift
- ;;
+ set fnord "$@"
+ shift
+ shift
+ ;;
*)
- set fnord "$@" "$arg"
- shift
- shift
- ;;
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
esac
done
"$@" -E 2>/dev/null |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
- sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
- echo " " >> "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+ echo "$tab" >> "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
diff --git a/binutils-2.25/djunpack.bat b/binutils-2.25/djunpack.bat
deleted file mode 100755
index 5c6e9b2..0000000
--- a/binutils-2.25/djunpack.bat
+++ /dev/null
@@ -1,52 +0,0 @@
-@echo off
-Rem
-Rem WARNING WARNING WARNING: This file needs to have DOS CRLF end-of-line
-Rem format, or else stock DOS/Windows shells will refuse to run it.
-Rem
-Rem This batch file unpacks the GDB distribution while simultaneously
-Rem renaming some of the files whose names are invalid on DOS or conflict
-Rem with other file names after truncation to DOS 8+3 namespace.
-Rem
-Rem Invoke like this:
-Rem
-Rem djunpack gdb-XYZ.tar
-Rem
-Rem where XYZ is the version number. If the argument includes leading
-Rem directories, it MUST use backslashes, not forward slashes.
-Rem
-Rem The following 2 lines need to be changed with each new GDB release, to
-Rem be identical to the name of the top-level directory where the GDB
-Rem distribution unpacks itself.
-set GDBVER=gdb-5.0
-if "%GDBVER%"=="gdb-5.0" GoTo EnvOk
-Rem If their environment space is too small, re-exec with a larger one
-command.com /e:4096 /c %0 %1
-GoTo End
-:EnvOk
-if not exist %1 GoTo NoArchive
-djtar -x -p -o %GDBVER%/gdb/config/djgpp/fnchange.lst %1 > fnchange.tmp
-Rem The following uses a feature of COPY whereby it does not copy
-Rem empty files. We need that because the previous line will create
-Rem an empty fnchange.tmp even if the command failed for some reason.
-copy fnchange.tmp junk.tmp > nul
-if not exist junk.tmp GoTo NoDjTar
-del junk.tmp
-sed -e "s,@V@,%GDBVER%,g" < fnchange.tmp > fnchange.lst
-Rem See the comment above about the reason for using COPY.
-copy fnchange.lst junk.tmp > nul
-if not exist junk.tmp GoTo NoSed
-del junk.tmp
-djtar -x -n fnchange.lst %1
-GoTo End
-:NoSed
-echo FAIL: Sed is not available.
-GoTo End
-:NoDjTar
-echo FAIL: DJTAR is not available or no fnchange.lst file in %1.
-GoTo End
-:NoArchive
-echo FAIL: the file %1 does not seem to exist.
-echo Remember that %1 cannot use forward slashes, only backslashes.
-GoTo End
-:End
-set GDBVER=
diff --git a/binutils-2.25/elfcpp/ChangeLog b/binutils-2.25/elfcpp/ChangeLog
index bc5681a..5f0e5f3 100644
--- a/binutils-2.25/elfcpp/ChangeLog
+++ b/binutils-2.25/elfcpp/ChangeLog
@@ -1,3 +1,7 @@
+2015-04-07 HC Yen <hc.yen@mediatek.com>
+
+ * arm.h: Add TAG_CPU_ARCH_V8 in Tag_CPU_arch EABI attribute.
+
2014-09-17 Han Shen <shenhan@google.com>
* aarch64.h (R_AARCH64_TLS_DTPREL64): Switch enum value with ...
diff --git a/binutils-2.25/elfcpp/arm.h b/binutils-2.25/elfcpp/arm.h
index b333676..b0438e3 100644
--- a/binutils-2.25/elfcpp/arm.h
+++ b/binutils-2.25/elfcpp/arm.h
@@ -192,7 +192,7 @@ enum
R_ARM_PRIVATE_14 = 126,
R_ARM_PRIVATE_15 = 127,
R_ARM_ME_TOO = 128, // Obsolete
- R_ARM_THM_TLS_DESCSEQ16 = 129,// Static Thumb16
+ R_ARM_THM_TLS_DESCSEQ16 = 129,// Static Thumb16
R_ARM_THM_TLS_DESCSEQ32 = 130,// Static Thumb32
// 131 - 139 Unallocated
// 140 - 159 Dynamic Reserved for future allocation
@@ -248,7 +248,8 @@ enum
TAG_CPU_ARCH_V6_M,
TAG_CPU_ARCH_V6S_M,
TAG_CPU_ARCH_V7E_M,
- MAX_TAG_CPU_ARCH = TAG_CPU_ARCH_V7E_M,
+ TAG_CPU_ARCH_V8,
+ MAX_TAG_CPU_ARCH = TAG_CPU_ARCH_V8,
// Pseudo-architecture to allow objects to be compatible with the subset of
// armv4t and armv6-m. This value should never be stored in object files.
TAG_CPU_ARCH_V4T_PLUS_V6_M = (MAX_TAG_CPU_ARCH + 1)
diff --git a/binutils-2.25/elfcpp/dwarf.h b/binutils-2.25/elfcpp/dwarf.h
index 331ec40..bb622ec 100644
--- a/binutils-2.25/elfcpp/dwarf.h
+++ b/binutils-2.25/elfcpp/dwarf.h
@@ -147,7 +147,13 @@ enum DW_LINE_OPS
// DWARF 3.
DW_LNS_set_prologue_end = 10,
DW_LNS_set_epilogue_begin = 11,
- DW_LNS_set_isa = 12
+ DW_LNS_set_isa = 12,
+ /* Experimental DWARF 5 extensions.
+ See http://wiki.dwarfstd.org/index.php?title=TwoLevelLineTables. */
+ DW_LNS_set_address_from_logical = 13, /* Actuals table only. */
+ DW_LNS_set_subprogram = 13, /* Logicals table only. */
+ DW_LNS_inlined_call = 14, /* Logicals table only. */
+ DW_LNS_pop_context = 15 /* Logicals table only. */
};
// Line number extended opcodes.
@@ -241,6 +247,20 @@ enum DW_SECT
DW_SECT_MAX = DW_SECT_MACRO,
};
+enum DW_LNCT
+{
+ DW_LNCT_path = 1,
+ DW_LNCT_directory_index = 2,
+ DW_LNCT_timestamp = 3,
+ DW_LNCT_size = 4,
+ DW_LNCT_MD5 = 5,
+ /* Experimental DWARF 5 extensions.
+ See http://wiki.dwarfstd.org/index.php?title=TwoLevelLineTables. */
+ DW_LNCT_subprogram_name = 6,
+ DW_LNCT_decl_file = 7,
+ DW_LNCT_decl_line = 8
+};
+
} // End namespace elfcpp.
#endif // !defined(ELFCPP_DWARF_H)
diff --git a/binutils-2.25/gas/.gitignore b/binutils-2.25/gas/.gitignore
new file mode 100644
index 0000000..27d4887
--- /dev/null
+++ b/binutils-2.25/gas/.gitignore
@@ -0,0 +1,9 @@
+/as-new
+
+/itbl-cpu.h
+/obj-format.h
+/targ-cpu.h
+/targ-env.h
+
+/doc/as.1
+/doc/asconfig.texi
diff --git a/binutils-2.25/gas/ChangeLog b/binutils-2.25/gas/ChangeLog
index 684098d..3b1d034 100644
--- a/binutils-2.25/gas/ChangeLog
+++ b/binutils-2.25/gas/ChangeLog
@@ -1,50 +1,3 @@
-2014-11-18 Igor Zamyatin <igor.zamyatin@intel.com>
-
- * config/tc-i386-intel.c (i386_operator): Remove last argument
- from lex_got call.
- * config/tc-i386.c (reloc): Remove bnd_prefix from parameters'
- list. Return always BFD_RELOC_32_PCREL.
- * (output_branch): Remove condition for BFD_RELOC_X86_64_PC32_BND.
- * (output_jump): Update call to reloc accordingly.
- * (output_interseg_jump): Likewise.
- * (output_disp): Likewise.
- * (output_imm): Likewise.
- * (x86_cons_fix_new): Likewise.
- * (lex_got): Remove bnd_prefix from parameters' list in macro and
- declarations. Don't use BFD_RELOC_X86_64_PLT32_BND.
- * (x86_cons): Update call to lex_got accordingly.
- * (i386_immediate): Likewise.
- * (i386_displacement): Likewise.
- * (md_apply_fix): Don't use BFD_RELOC_X86_64_PLT32_BND nor
- BFD_RELOC_X86_64_PC32_BND.
- * (tc_gen_reloc): Likewise.
-
-2014-11-17 Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
-
- * config/tc-aarch64.c (aarch64_cpus): Add "xgene2".
- * doc/c-aarch64.texi: Document it.
-
-2014-11-17 Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
-
- * config/tc-aarch64.c (aarch64_cpus): Add "xgene1".
- * doc/c-aarch64.texi: Rename xgene-1 to xgene1.
-
-2014-11-18 Marcus Shawcroft <marcus.shawcroft@arm.com>
-
- Apply trunk patch:
- * config/tc-aarch64.c (aarch64_cpus): Add CRC feature for
- cortex-A53 and cortex-A57.
-
-2014-11-17 Nick Clifton <nickc@redhat.com>
-
- Apply trunk patches:
-
- 2014-11-13 Nick Clifton <nickc@redhat.com>
-
- PR binutils/17512
- * config/obj-coff.c (coff_obj_symbol_new_hook): Set the is_sym
- field.
-
2014-11-17 Ilya Tocar <ilya.tocar@intel.com>
* config/tc-i386.c (cpu_arch): Add .avx512vbmi.
@@ -73,6 +26,30 @@
* doc/c-i386.texi: Re-arrange avx512* and xsave*. Add
clflushopt and se1. Remove duplicated entries.
+2014-11-13 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * config/tc-aarch64.c (aarch64_cpus): Add CRC feature for
+ cortex-A53 and cortex-A57.
+
+2014-11-13 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gas/17598
+ * config/tc-i386.c (reloc): Support BFD_RELOC_X86_64_GOTPLT64.
+
+2014-11-13 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/17512
+ * config/obj-coff.c (coff_obj_symbol_new_hook): Set the is_sym
+ field.
+
+2014-11-13 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * config/tc-aarch64.c (aarch64_cpus): Remove example-1 and example-2.
+
+2014-11-12 Alan Modra <amodra@gmail.com>
+
+ * config/tc-z80.c (parse_exp_not_indexed, parse_exp): Warning fixes.
+
2014-11-12 Alan Modra <amodra@gmail.com>
PR ld/17482
@@ -83,32 +60,75 @@
* po/uk.po: Updated Ukranian translation.
-2014-11-10 Matthew Fortune <matthew.fortune@imgtec.com>
-
- Apply trunk patch:
- * config/tc-mips.c (mips_elf_final_processing): Add INSN_ISA32R6
- and INSN_ISA64R6 support.
-
2014-11-07 H.J. Lu <hongjiu.lu@intel.com>
- Apply trunk patch:
- 2014-11-07 H.J. Lu <hongjiu.lu@intel.com>
-
PR ld/17482
* config/tc-i386.c (output_insn): Add a dummy REX_OPCODE prefix
- for structions with R_X86_64_GOTTPOFF relocation for x32 if needed.
+ for instructions with R_X86_64_GOTTPOFF relocation for x32 if
+ needed.
+
+2014-11-06 Sandra Loosemore <sandra@codesourcery.com>
+
+ * config/tc-nios2.c (nios2_diagnose_overflow): Adjust call to
+ nios2_find_opcode_hash.
+
+2014-11-05 Matthew Fortune <matthew.fortune@imgtec.com>
+
+ * config/tc-mips.c (mips_elf_final_processing): Add INSN_ISA32R6
+ and INSN_ISA64R6 support.
+
+2014-11-04 Alan Modra <amodra@gmail.com>
+
+ * expr.c (expr_symbol_where): Don't use register keyword.
+ * app.c (app_push, app_pop, do_scrub_chars): Likewise.
+ * ecoff.c (add_string, add_ecoff_symbol, add_aux_sym_symint,
+ add_aux_sym_rndx, add_aux_sym_tir, add_procedure, add_file,
+ ecoff_build_lineno, ecoff_setup_ext, allocate_cluster.
+ allocate_scope, allocate_vlinks, allocate_shash,
+ allocate_thash, allocate_tag, allocate_forward, allocate_thead,
+ allocate_lineno_list): Likewise.
+ * frags.c (frag_more, frag_var, frag_variant, frag_wane): Likewise.
+ * input-file.c (input_file_push, input_file_pop): Likewise.
+ * input-scrub.c (input_scrub_push, input_scrub_next_buffer): Likewise.
+ * subsegs.c (subseg_change): Likewise.
+ * symbols.c (colon, symbol_table_insert, symbol_find_or_make)
+ (dollar_label_name, fb_label_name): Likewise.
+ * write.c (relax_align): Likewise.
+ * config/tc-alpha.c (s_alpha_pdesc): Likewise.
+ * config/tc-bfin.c (bfin_s_bss): Likewise.
+ * config/tc-i860.c (md_estimate_size_before_relax): Likewise.
+ * config/tc-m68hc11.c (md_convert_frag): Likewise.
+ * config/tc-m68k.c (m68k_ip, crack_operand): Likewise.
+ (md_convert_frag_1, s_even): Likewise.
+ * config/tc-mips.c (mips_clear_insn_labels): Likewise.
+ * config/tc-mn10200.c (md_begin): Likewise.
+ * config/tc-s390.c (s390_setup_opcodes, md_begin): Likewise.
+ * config/tc-sh.c (sh_elf_cons): Likewise.
+ * config/tc-tic4x.c (tic4x_cons, tic4x_stringer): Likewise.
+ * config/m68k-parse.y (m68k_reg_parse): Likewise. Convert from K&R.
+ (yylex, m68k_ip_op, yyerror): Convert from K&R.
+
+2014-11-04 Alan Modra <amodra@gmail.com>
+
+ * config/tc-d10v.c (find_opcode): Call frag_now_fix_octets rather
+ than equivalent obstack_next_free expression.
+ * config/tc-d30v.c (find_format): Likewise.
2014-11-03 Nick Clifton <nickc@redhat.com>
- Apply trunk patch:
- 2014-11-03 Nick Clifton <nickc@redhat.com>
* config/tc-msp430.c (msp430_srcoperand): Fix range test for
20-bit values.
-2014-10-30 Nick Clifton <nickc@redhat.com>
+2014-10-31 Andrew Pinski <apinski@cavium.com>
+ Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com>
+
+ * config/tc-mips.c (CPU_IS_OCTEON): Handle CPU_OCTEON3.
+ (mips_cpu_info_table): Octeon3 enables virt ase.
+ * doc/c-mips.texi: Document octeon3 as an acceptable value for
+ -march=.
+
+2014-10-30 Dr Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
- Apply trunk patches
- 2014-10-30 Dr Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
* config/tc-aarch64.h (MAX_MEM_FOR_RS_ALIGN_CODE): Define to 7.
* config/tc-aarch64.c (aarch64_handle_align): Rewrite to handle
large alignments with a constant fragment size of
@@ -118,41 +138,117 @@
* po/uk.po: New Ukranian translation.
-2014-10-28 Matthew Fortune <matthew.fortune@imgtec.com>
+2014-10-23 Sandra Loosemore <sandra@codesourcery.com>
+
+ * config/tc-nios2.c (nios2_insn_infoS): Add constant_bits field.
+ (nios2_arg_infoS, nios2_arg_hash, nios2_arg_lookup): Delete.
+ (nios2_control_register_arg_p): Delete.
+ (nios2_coproc_reg): Delete.
+ (nios2_relax_frag): Remove hard-coded instruction size.
+ (md_convert_frag): Use new insn accessor macros.
+ (nios2_diagnose_overflow): Remove hard-coded instruction size.
+ (md_apply_fix): Likewise.
+ (bad_opcode): New.
+ (nios2_parse_reg): New.
+ (nios2_assemble_expression): Remove prev_reloc parameter. Adjust
+ uses and callers.
+ (nios2_assemble_arg_c): New.
+ (nios2_assemble_arg_d): New.
+ (nios2_assemble_arg_s): New.
+ (nios2_assemble_arg_t): New.
+ (nios2_assemble_arg_i): New.
+ (nios2_assemble_arg_u): New.
+ (nios2_assemble_arg_o): New.
+ (nios2_assemble_arg_j): New.
+ (nios2_assemble_arg_l): New.
+ (nios2_assemble_arg_m): New.
+ (nios2_assemble_args): New.
+ (nios2_assemble_args_dst): Delete.
+ (nios2_assemble_args_tsi): Delete.
+ (nios2_assemble_args_tsu): Delete.
+ (nios2_assemble_args_sto): Delete.
+ (nios2_assemble_args_o): Delete.
+ (nios2_assemble_args_is): Delete.
+ (nios2_assemble_args_m): Delete.
+ (nios2_assemble_args_s): Delete.
+ (nios2_assemble_args_tis): Delete.
+ (nios2_assemble_args_dc): Delete.
+ (nios2_assemble_args_cs): Delete.
+ (nios2_assemble_args_ds): Delete.
+ (nios2_assemble_args_ldst): Delete.
+ (nios2_assemble_args_none): Delete.
+ (nios2_assemble_args_dsj): Delete.
+ (nios2_assemble_args_d): Delete.
+ (nios2_assemble_args_b): Delete.
+ (nios2_arg_info_structs): Delete.
+ (NIOS2_NUM_ARGS): Delete.
+ (nios2_consume_arg): Remove insn parameter. Use new macros.
+ Don't check register arguments here. Remove 'b' case.
+ (nios2_consume_separator): Move check for missing separators to...
+ (nios2_parse_args): ...here. Remove special case for optional
+ arguments.
+ (output_insn): Avoid using hard-coded insn size.
+ (output_ubranch): Likewise.
+ (output_cbranch): Likewise.
+ (output_call): Use new macros.
+ (output_addi): Likewise.
+ (output_ori): Likewise.
+ (output_xori): Likewise.
+ (output_movia): Likewise.
+ (md_begin): Remove nios2_arg_info_structs initialization.
+ (md_assemble): Initialize constant_bits field. Use
+ nios2_parse_args instead of looking up parse function in hash table.
+
+2014-10-22 Matthew Fortune <matthew.fortune@imgtec.com>
- Apply trunk patches
- 2014-10-22 Matthew Fortune <matthew.fortune@imgtec.com>
* doc/as.texinfo: Update the MIPS FP ABI descriptions.
* doc/c-mips.texi: Spell check and correct throughout.
-2014-10-28 Matthew Fortune <matthew.fortune@imgtec.com>
+2014-10-21 Maciej W. Rozycki <macro@codesourcery.com>
- Apply trunk patches
- 2014-10-21 Maciej W. Rozycki <macro@codesourcery.com>
* config/tc-mips.c (s_insn): Set file options.
-2014-10-28 Matthew Fortune <matthew.fortune@imgtec.com>
+2014-10-21 Andrew Pinski <apinski@cavium.com>
- Apply trunk patches
- 2014-10-17 Matthew Fortune <matthew.fortune@imgtec.com>
- * doc/c-mips.texi: Fix bad @value references.
+ * config/tc-aarch64.c (aarch64_cpus):
+ Add thunderx.
+ * doc/c-aarch64.texi: Document that thunderx
+ is a valid processor name.
+
+2014-10-21 Jan Beulich <jbeulich@suse.com>
+
+ * read.c (HANDLE_CONDITIONAL_ASSEMBLY): New parameter "num_read".
+ (read_a_source_file): Adjust HANDLE_CONDITIONAL_ASSEMBLY
+ invocations.
+ (_find_end_of_line): Don't issue "stray '\\'" warning when in
+ false branch of conditional.
+
+2014-10-21 Jan Beulich <jbeulich@suse.com>
+
+ * config/tc-aarch64.c (output_operand_error_record): Move down
+ assertion of idx being non-negative. Use local variables when
+ available.
+
+2014-10-18 Alan Modra <amodra@gmail.com>
-2014-10-28 Alan Modra <amodra@gmail.com>
- Apply trunk patches
- 2014-10-18 Alan Modra <amodra@gmail.com>
PR 17493
* write.c (adjust_reloc_syms): Don't allow symbols in reg_section
to be reduced to reg_section section symbol.
* gas/config/tc-i386.c (i386_finalize_immediate): Reject all
reg_section immediates.
- 2014-10-15 Chen Gang <gang.chen.5i5j@gmail.com>
- * config/tc-tic4x.c (md_assemble): Correct strncat size.
+2014-10-17 Matthew Fortune <matthew.fortune@imgtec.com>
+
+ * doc/c-mips.texi: Fix bad @value references.
2014-10-15 Tristan Gingold <gingold@adacore.com>
* configure: Regenerate.
+2014-10-15 Chen Gang <gang.chen.5i5j@gmail.com>
+
+ * config/tc-tic4x.c (md_assemble): Correct strncat size.
+
2014-10-14 Tristan Gingold <gingold@adacore.com>
* NEWS: Add marker for 2.25.
diff --git a/binutils-2.25/gas/Makefile.in b/binutils-2.25/gas/Makefile.in
index 5dc250f..01a797a 100644
--- a/binutils-2.25/gas/Makefile.in
+++ b/binutils-2.25/gas/Makefile.in
@@ -16,7 +16,7 @@
@SET_MAKE@
#
-# Copyright (C) 2012-2014 Free Software Foundation, Inc.
+# Copyright (C) 2012-2015 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/binutils-2.25/gas/app.c b/binutils-2.25/gas/app.c
index 32a172f..d5a10c1 100644
--- a/binutils-2.25/gas/app.c
+++ b/binutils-2.25/gas/app.c
@@ -247,7 +247,7 @@ struct app_save
char *
app_push (void)
{
- register struct app_save *saved;
+ struct app_save *saved;
saved = (struct app_save *) xmalloc (sizeof (*saved));
saved->state = state;
@@ -284,7 +284,7 @@ app_push (void)
void
app_pop (char *arg)
{
- register struct app_save *saved = (struct app_save *) arg;
+ struct app_save *saved = (struct app_save *) arg;
/* There is no do_scrub_end (). */
state = saved->state;
@@ -360,7 +360,7 @@ do_scrub_chars (size_t (*get) (char *, size_t), char *tostart, size_t tolen)
char *from;
char *fromend;
size_t fromlen;
- register int ch, ch2 = 0;
+ int ch, ch2 = 0;
/* Character that started the string we're working on. */
static char quotechar;
diff --git a/binutils-2.25/gas/as.c b/binutils-2.25/gas/as.c
index 85a04a3..3d43dae 100644
--- a/binutils-2.25/gas/as.c
+++ b/binutils-2.25/gas/as.c
@@ -96,6 +96,9 @@ int debug_memory = 0;
/* Enable verbose mode. */
int verbose = 0;
+/* Enable incbin directive. */
+int allow_incbin_directive = 1;
+
/* Keep the output file. */
static int keep_it = 0;
@@ -455,7 +458,9 @@ parse_args (int * pargc, char *** pargv)
OPTION_REDUCE_MEMORY_OVERHEADS,
OPTION_WARN_FATAL,
OPTION_COMPRESS_DEBUG,
- OPTION_NOCOMPRESS_DEBUG
+ OPTION_NOCOMPRESS_DEBUG,
+ OPTION_ALLOW_INCBIN,
+ OPTION_NOALLOW_INCBIN
/* When you add options here, check that they do
not collide with OPTION_MD_BASE. See as.h. */
};
@@ -473,6 +478,8 @@ parse_args (int * pargc, char *** pargv)
,{"a", optional_argument, NULL, 'a'}
/* Handle -al=<FILE>. */
,{"al", optional_argument, NULL, OPTION_AL}
+ ,{"allow-incbin", optional_argument, NULL, OPTION_ALLOW_INCBIN}
+ ,{"noallow-incbin", optional_argument, NULL, OPTION_NOALLOW_INCBIN}
,{"compress-debug-sections", no_argument, NULL, OPTION_COMPRESS_DEBUG}
,{"nocompress-debug-sections", no_argument, NULL, OPTION_NOCOMPRESS_DEBUG}
,{"debug-prefix-map", required_argument, NULL, OPTION_DEBUG_PREFIX_MAP}
@@ -668,6 +675,14 @@ This program has absolutely no warranty.\n"));
flag_compress_debug = 0;
break;
+ case OPTION_ALLOW_INCBIN:
+ allow_incbin_directive = 1;
+ break;
+
+ case OPTION_NOALLOW_INCBIN:
+ allow_incbin_directive = 0;
+ break;
+
case OPTION_DEBUG_PREFIX_MAP:
add_debug_prefix_map (optarg);
break;
diff --git a/binutils-2.25/gas/as.h b/binutils-2.25/gas/as.h
index df04dce..f614187 100644
--- a/binutils-2.25/gas/as.h
+++ b/binutils-2.25/gas/as.h
@@ -423,6 +423,9 @@ extern int max_macro_nest;
/* Verbosity level. */
extern int verbose;
+/* Enable incbin directive. */
+extern int allow_incbin_directive;
+
/* Obstack chunk size. Keep large for efficient space use, make small to
increase malloc calls for monitoring memory allocation. */
extern int chunksize;
diff --git a/binutils-2.25/gas/config/bfin-aux.h b/binutils-2.25/gas/config/bfin-aux.h
index 44665b9..44665b9 100644..100755
--- a/binutils-2.25/gas/config/bfin-aux.h
+++ b/binutils-2.25/gas/config/bfin-aux.h
diff --git a/binutils-2.25/gas/config/m68k-parse.y b/binutils-2.25/gas/config/m68k-parse.y
index d5c59a1..3c7051c 100644
--- a/binutils-2.25/gas/config/m68k-parse.y
+++ b/binutils-2.25/gas/config/m68k-parse.y
@@ -685,8 +685,7 @@ static char *strorig;
*CCP. Otherwise don't change *CCP, and return 0. */
static enum m68k_register
-m68k_reg_parse (ccp)
- register char **ccp;
+m68k_reg_parse (char **ccp)
{
char *start = *ccp;
char c;
@@ -748,7 +747,7 @@ m68k_reg_parse (ccp)
/* The lexer. */
static int
-yylex ()
+yylex (void)
{
enum m68k_register reg;
char *s;
@@ -1091,9 +1090,7 @@ yylex ()
from outside this file. */
int
-m68k_ip_op (s, oparg)
- char *s;
- struct m68k_op *oparg;
+m68k_ip_op (char *s, struct m68k_op *oparg)
{
memset (oparg, 0, sizeof *oparg);
oparg->error = NULL;
@@ -1111,8 +1108,7 @@ m68k_ip_op (s, oparg)
/* The error handler. */
static void
-yyerror (s)
- const char *s;
+yyerror (const char *s)
{
op->error = s;
}
diff --git a/binutils-2.25/gas/config/obj-elf.c b/binutils-2.25/gas/config/obj-elf.c
index e2ef99e..50a5d1c 100644
--- a/binutils-2.25/gas/config/obj-elf.c
+++ b/binutils-2.25/gas/config/obj-elf.c
@@ -125,8 +125,10 @@ static const pseudo_typeS elf_pseudo_table[] =
{"8byte", cons, 8},
/* These are used for dwarf2. */
{ "file", (void (*) (int)) dwarf2_directive_file, 0 },
- { "loc", dwarf2_directive_loc, 0 },
+ { "loc", dwarf2_directive_loc, 0 },
{ "loc_mark_labels", dwarf2_directive_loc_mark_labels, 0 },
+ { "lloc", dwarf2_directive_loc, 1 },
+ { "subprog", dwarf2_directive_subprog, 0 },
/* We need to trap the section changing calls to handle .previous. */
{"data", obj_elf_data, 0},
diff --git a/binutils-2.25/gas/config/tc-aarch64.c b/binutils-2.25/gas/config/tc-aarch64.c
index 0e58764..4f3fe47 100644
--- a/binutils-2.25/gas/config/tc-aarch64.c
+++ b/binutils-2.25/gas/config/tc-aarch64.c
@@ -3939,11 +3939,11 @@ output_info (const char *format, ...)
static void
output_operand_error_record (const operand_error_record *record, char *str)
{
- int idx = record->detail.index;
+ const aarch64_operand_error *detail = &record->detail;
+ int idx = detail->index;
const aarch64_opcode *opcode = record->opcode;
- enum aarch64_opnd opd_code = (idx != -1 ? opcode->operands[idx]
+ enum aarch64_opnd opd_code = (idx >= 0 ? opcode->operands[idx]
: AARCH64_OPND_NIL);
- const aarch64_operand_error *detail = &record->detail;
switch (detail->kind)
{
@@ -3955,20 +3955,22 @@ output_operand_error_record (const operand_error_record *record, char *str)
case AARCH64_OPDE_RECOVERABLE:
case AARCH64_OPDE_FATAL_SYNTAX_ERROR:
case AARCH64_OPDE_OTHER_ERROR:
- gas_assert (idx >= 0);
/* Use the prepared error message if there is, otherwise use the
operand description string to describe the error. */
if (detail->error != NULL)
{
- if (detail->index == -1)
+ if (idx < 0)
as_bad (_("%s -- `%s'"), detail->error, str);
else
as_bad (_("%s at operand %d -- `%s'"),
- detail->error, detail->index + 1, str);
+ detail->error, idx + 1, str);
}
else
- as_bad (_("operand %d should be %s -- `%s'"), idx + 1,
+ {
+ gas_assert (idx >= 0);
+ as_bad (_("operand %d should be %s -- `%s'"), idx + 1,
aarch64_get_operand_desc (opd_code), str);
+ }
break;
case AARCH64_OPDE_INVALID_VARIANT:
@@ -4073,28 +4075,28 @@ output_operand_error_record (const operand_error_record *record, char *str)
if (detail->data[0] != detail->data[1])
as_bad (_("%s out of range %d to %d at operand %d -- `%s'"),
detail->error ? detail->error : _("immediate value"),
- detail->data[0], detail->data[1], detail->index + 1, str);
+ detail->data[0], detail->data[1], idx + 1, str);
else
as_bad (_("%s expected to be %d at operand %d -- `%s'"),
detail->error ? detail->error : _("immediate value"),
- detail->data[0], detail->index + 1, str);
+ detail->data[0], idx + 1, str);
break;
case AARCH64_OPDE_REG_LIST:
if (detail->data[0] == 1)
as_bad (_("invalid number of registers in the list; "
"only 1 register is expected at operand %d -- `%s'"),
- detail->index + 1, str);
+ idx + 1, str);
else
as_bad (_("invalid number of registers in the list; "
"%d registers are expected at operand %d -- `%s'"),
- detail->data[0], detail->index + 1, str);
+ detail->data[0], idx + 1, str);
break;
case AARCH64_OPDE_UNALIGNED:
as_bad (_("immediate value should be a multiple of "
"%d at operand %d -- `%s'"),
- detail->data[0], detail->index + 1, str);
+ detail->data[0], idx + 1, str);
break;
default:
@@ -7184,20 +7186,10 @@ static const struct aarch64_cpu_option_table aarch64_cpus[] = {
AARCH64_FEATURE_CRC), "Cortex-A53"},
{"cortex-a57", AARCH64_FEATURE(AARCH64_ARCH_V8,
AARCH64_FEATURE_CRC), "Cortex-A57"},
- /* The 'xgene-1' name is an older name for 'xgene1', which was used
- in earlier releases and is superseded by 'xgene1' in all
- tools. */
+ {"thunderx", AARCH64_ARCH_V8, "Cavium ThunderX"},
{"xgene-1", AARCH64_ARCH_V8, "APM X-Gene 1"},
- {"xgene1", AARCH64_ARCH_V8, "APM X-Gene 1"},
- {"xgene2", AARCH64_FEATURE(AARCH64_ARCH_V8,
- AARCH64_FEATURE_CRC), "APM X-Gene 2"},
{"generic", AARCH64_ARCH_V8, NULL},
- /* These two are example CPUs supported in GCC, once we have real
- CPUs they will be removed. */
- {"example-1", AARCH64_ARCH_V8, NULL},
- {"example-2", AARCH64_ARCH_V8, NULL},
-
{NULL, AARCH64_ARCH_NONE, NULL}
};
diff --git a/binutils-2.25/gas/config/tc-alpha.c b/binutils-2.25/gas/config/tc-alpha.c
index ea6aa19..f91c4ca 100644
--- a/binutils-2.25/gas/config/tc-alpha.c
+++ b/binutils-2.25/gas/config/tc-alpha.c
@@ -4482,7 +4482,7 @@ s_alpha_pdesc (int ignore ATTRIBUTE_UNUSED)
{
char *name;
char name_end;
- register char *p;
+ char *p;
expressionS exp;
symbolS *entry_sym;
const char *entry_sym_name;
diff --git a/binutils-2.25/gas/config/tc-bfin.c b/binutils-2.25/gas/config/tc-bfin.c
index 447a477..6646482 100644
--- a/binutils-2.25/gas/config/tc-bfin.c
+++ b/binutils-2.25/gas/config/tc-bfin.c
@@ -111,7 +111,7 @@ bfin_pic_ptr (int nbytes)
static void
bfin_s_bss (int ignore ATTRIBUTE_UNUSED)
{
- register int temp;
+ int temp;
temp = get_absolute_expression ();
subseg_set (bss_section, (subsegT) temp);
diff --git a/binutils-2.25/gas/config/tc-d10v.c b/binutils-2.25/gas/config/tc-d10v.c
index 8e3d171..dacfeb7 100644
--- a/binutils-2.25/gas/config/tc-d10v.c
+++ b/binutils-2.25/gas/config/tc-d10v.c
@@ -1226,9 +1226,7 @@ find_opcode (struct d10v_opcode *opcode, expressionS myops[])
sym_frag = symbol_get_frag (myops[opnum].X_add_symbol);
found_symbol = FALSE;
- current_position =
- obstack_next_free (&frchain_now->frch_obstack)
- - frag_now->fr_literal;
+ current_position = frag_now_fix_octets ();
symbol_position = S_GET_VALUE (myops[opnum].X_add_symbol);
for (f = frchain_now->frch_root; f; f = f->fr_next)
diff --git a/binutils-2.25/gas/config/tc-d30v.c b/binutils-2.25/gas/config/tc-d30v.c
index 9076e41..a73f9b1 100644
--- a/binutils-2.25/gas/config/tc-d30v.c
+++ b/binutils-2.25/gas/config/tc-d30v.c
@@ -1242,12 +1242,10 @@ find_format (struct d30v_opcode *opcode,
/* Calculate the current address by running through the
previous frags and adding our current offset. */
- value = 0;
+ value = frag_now_fix_octets ();
for (f = frchain_now->frch_root; f; f = f->fr_next)
value += f->fr_fix + f->fr_offset;
- value = (S_GET_VALUE (myops[j].X_add_symbol) - value
- - (obstack_next_free (&frchain_now->frch_obstack)
- - frag_now->fr_literal));
+ value = S_GET_VALUE (myops[j].X_add_symbol) - value;
if (check_range (value, bits, flags))
match = 0;
}
diff --git a/binutils-2.25/gas/config/tc-epiphany.c b/binutils-2.25/gas/config/tc-epiphany.c
index ebaedc4..ebaedc4 100644..100755
--- a/binutils-2.25/gas/config/tc-epiphany.c
+++ b/binutils-2.25/gas/config/tc-epiphany.c
diff --git a/binutils-2.25/gas/config/tc-epiphany.h b/binutils-2.25/gas/config/tc-epiphany.h
index ddfb475..ddfb475 100644..100755
--- a/binutils-2.25/gas/config/tc-epiphany.h
+++ b/binutils-2.25/gas/config/tc-epiphany.h
diff --git a/binutils-2.25/gas/config/tc-i386-intel.c b/binutils-2.25/gas/config/tc-i386-intel.c
index 86b96eb..b55d985 100644
--- a/binutils-2.25/gas/config/tc-i386-intel.c
+++ b/binutils-2.25/gas/config/tc-i386-intel.c
@@ -141,7 +141,9 @@ operatorT i386_operator (const char *name, unsigned int operands, char *pc)
int adjust = 0;
char *gotfree_input_line = lex_got (&i.reloc[this_operand],
&adjust,
- &intel_state.reloc_types);
+ &intel_state.reloc_types,
+ (i.bnd_prefix != NULL
+ || add_bnd_prefix));
if (!gotfree_input_line)
break;
diff --git a/binutils-2.25/gas/config/tc-i386.c b/binutils-2.25/gas/config/tc-i386.c
index 6f7a1ae..97e326c 100644
--- a/binutils-2.25/gas/config/tc-i386.c
+++ b/binutils-2.25/gas/config/tc-i386.c
@@ -2830,6 +2830,7 @@ static bfd_reloc_code_real_type
reloc (unsigned int size,
int pcrel,
int sign,
+ int bnd_prefix,
bfd_reloc_code_real_type other)
{
if (other != NO_RELOC)
@@ -2842,6 +2843,9 @@ reloc (unsigned int size,
case BFD_RELOC_X86_64_GOT32:
return BFD_RELOC_X86_64_GOT64;
break;
+ case BFD_RELOC_X86_64_GOTPLT64:
+ return BFD_RELOC_X86_64_GOTPLT64;
+ break;
case BFD_RELOC_X86_64_PLTOFF64:
return BFD_RELOC_X86_64_PLTOFF64;
break;
@@ -2905,7 +2909,9 @@ reloc (unsigned int size,
{
case 1: return BFD_RELOC_8_PCREL;
case 2: return BFD_RELOC_16_PCREL;
- case 4: return BFD_RELOC_32_PCREL;
+ case 4: return (bnd_prefix && object_64bit
+ ? BFD_RELOC_X86_64_PC32_BND
+ : BFD_RELOC_32_PCREL);
case 8: return BFD_RELOC_64_PCREL;
}
as_bad (_("cannot do %u byte pc-relative relocation"), size);
@@ -6770,7 +6776,13 @@ output_branch (void)
/* 1 possible extra opcode + 4 byte displacement go in var part.
Pass reloc in fr_var. */
- frag_var (rs_machine_dependent, 5, i.reloc[0], subtype, sym, off, p);
+ frag_var (rs_machine_dependent, 5,
+ ((!object_64bit
+ || i.reloc[0] != NO_RELOC
+ || (i.bnd_prefix == NULL && !add_bnd_prefix))
+ ? i.reloc[0]
+ : BFD_RELOC_X86_64_PC32_BND),
+ subtype, sym, off, p);
}
static void
@@ -6846,7 +6858,10 @@ output_jump (void)
}
fixP = fix_new_exp (frag_now, p - frag_now->fr_literal, size,
- i.op[0].disps, 1, reloc (size, 1, 1, i.reloc[0]));
+ i.op[0].disps, 1, reloc (size, 1, 1,
+ (i.bnd_prefix != NULL
+ || add_bnd_prefix),
+ i.reloc[0]));
/* All jumps handled here are signed, but don't use a signed limit
check for 32 and 16 bit jumps as we want to allow wrap around at
@@ -6912,7 +6927,7 @@ output_interseg_jump (void)
}
else
fix_new_exp (frag_now, p - frag_now->fr_literal, size,
- i.op[1].imms, 0, reloc (size, 0, 0, i.reloc[1]));
+ i.op[1].imms, 0, reloc (size, 0, 0, 0, i.reloc[1]));
if (i.op[0].imms->X_op != O_constant)
as_bad (_("can't handle non absolute segment in `%s'"),
i.tm.name);
@@ -7191,7 +7206,10 @@ output_disp (fragS *insn_start_frag, offsetT insn_start_off)
}
p = frag_more (size);
- reloc_type = reloc (size, pcrel, sign, i.reloc[n]);
+ reloc_type = reloc (size, pcrel, sign,
+ (i.bnd_prefix != NULL
+ || add_bnd_prefix),
+ i.reloc[n]);
if (GOT_symbol
&& GOT_symbol == i.op[n].disps->X_add_symbol
&& (((reloc_type == BFD_RELOC_32
@@ -7282,7 +7300,7 @@ output_imm (fragS *insn_start_frag, offsetT insn_start_off)
sign = 0;
p = frag_more (size);
- reloc_type = reloc (size, 0, sign, i.reloc[n]);
+ reloc_type = reloc (size, 0, sign, 0, i.reloc[n]);
/* This is tough to explain. We end up with this one if we
* have operands that look like
@@ -7375,7 +7393,7 @@ void
x86_cons_fix_new (fragS *frag, unsigned int off, unsigned int len,
expressionS *exp, bfd_reloc_code_real_type r)
{
- r = reloc (len, 0, cons_sign, r);
+ r = reloc (len, 0, cons_sign, 0, r);
#ifdef TE_PE
if (exp->X_op == O_secrel)
@@ -7401,7 +7419,7 @@ x86_address_bytes (void)
#if !(defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) || defined (OBJ_MACH_O)) \
|| defined (LEX_AT)
-# define lex_got(reloc, adjust, types) NULL
+# define lex_got(reloc, adjust, types, bnd_prefix) NULL
#else
/* Parse operands of the form
<symbol>@GOTOFF+<nnn>
@@ -7415,7 +7433,8 @@ x86_address_bytes (void)
static char *
lex_got (enum bfd_reloc_code_real *rel,
int *adjust,
- i386_operand_type *types)
+ i386_operand_type *types,
+ int bnd_prefix)
{
/* Some of the relocations depend on the size of what field is to
be relocated. But in our callers i386_immediate and i386_displacement
@@ -7550,6 +7569,8 @@ lex_got (enum bfd_reloc_code_real *rel,
*adjust = len;
memcpy (tmpbuf + first, past_reloc, second);
tmpbuf[first + second] = '\0';
+ if (bnd_prefix && *rel == BFD_RELOC_X86_64_PLT32)
+ *rel = BFD_RELOC_X86_64_PLT32_BND;
return tmpbuf;
}
@@ -7582,7 +7603,8 @@ lex_got (enum bfd_reloc_code_real *rel,
static char *
lex_got (enum bfd_reloc_code_real *rel ATTRIBUTE_UNUSED,
int *adjust ATTRIBUTE_UNUSED,
- i386_operand_type *types)
+ i386_operand_type *types,
+ int bnd_prefix ATTRIBUTE_UNUSED)
{
static const struct
{
@@ -7683,7 +7705,7 @@ x86_cons (expressionS *exp, int size)
int adjust = 0;
save = input_line_pointer;
- gotfree_input_line = lex_got (&got_reloc, &adjust, NULL);
+ gotfree_input_line = lex_got (&got_reloc, &adjust, NULL, 0);
if (gotfree_input_line)
input_line_pointer = gotfree_input_line;
@@ -7917,7 +7939,9 @@ i386_immediate (char *imm_start)
save_input_line_pointer = input_line_pointer;
input_line_pointer = imm_start;
- gotfree_input_line = lex_got (&i.reloc[this_operand], NULL, &types);
+ gotfree_input_line = lex_got (&i.reloc[this_operand], NULL, &types,
+ (i.bnd_prefix != NULL
+ || add_bnd_prefix));
if (gotfree_input_line)
input_line_pointer = gotfree_input_line;
@@ -8174,7 +8198,9 @@ i386_displacement (char *disp_start, char *disp_end)
*displacement_string_end = '0';
}
#endif
- gotfree_input_line = lex_got (&i.reloc[this_operand], NULL, &types);
+ gotfree_input_line = lex_got (&i.reloc[this_operand], NULL, &types,
+ (i.bnd_prefix != NULL
+ || add_bnd_prefix));
if (gotfree_input_line)
input_line_pointer = gotfree_input_line;
@@ -9134,7 +9160,8 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
&& (fixP->fx_r_type == BFD_RELOC_32_PCREL
|| fixP->fx_r_type == BFD_RELOC_64_PCREL
|| fixP->fx_r_type == BFD_RELOC_16_PCREL
- || fixP->fx_r_type == BFD_RELOC_8_PCREL)
+ || fixP->fx_r_type == BFD_RELOC_8_PCREL
+ || fixP->fx_r_type == BFD_RELOC_X86_64_PC32_BND)
&& !use_rela_relocations)
{
/* This is a hack. There should be a better way to handle this.
@@ -9203,6 +9230,7 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
{
case BFD_RELOC_386_PLT32:
case BFD_RELOC_X86_64_PLT32:
+ case BFD_RELOC_X86_64_PLT32_BND:
/* 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;
@@ -10326,6 +10354,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
#endif
case BFD_RELOC_X86_64_PLT32:
+ case BFD_RELOC_X86_64_PLT32_BND:
case BFD_RELOC_X86_64_GOT32:
case BFD_RELOC_X86_64_GOTPCREL:
case BFD_RELOC_386_PLT32:
@@ -10386,7 +10415,10 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
break;
case 1: code = BFD_RELOC_8_PCREL; break;
case 2: code = BFD_RELOC_16_PCREL; break;
- case 4: code = BFD_RELOC_32_PCREL; break;
+ case 4:
+ code = (fixp->fx_r_type == BFD_RELOC_X86_64_PC32_BND
+ ? fixp-> fx_r_type : BFD_RELOC_32_PCREL);
+ break;
#ifdef BFD64
case 8: code = BFD_RELOC_64_PCREL; break;
#endif
@@ -10479,6 +10511,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
switch (code)
{
case BFD_RELOC_X86_64_PLT32:
+ case BFD_RELOC_X86_64_PLT32_BND:
case BFD_RELOC_X86_64_GOT32:
case BFD_RELOC_X86_64_GOTPCREL:
case BFD_RELOC_X86_64_TLSGD:
diff --git a/binutils-2.25/gas/config/tc-i860.c b/binutils-2.25/gas/config/tc-i860.c
index 1b55b80..dd51c26 100644
--- a/binutils-2.25/gas/config/tc-i860.c
+++ b/binutils-2.25/gas/config/tc-i860.c
@@ -1028,7 +1028,7 @@ md_number_to_chars (char *buf, valueT val, int n)
/* This should never be called for i860. */
int
-md_estimate_size_before_relax (register fragS *fragP ATTRIBUTE_UNUSED,
+md_estimate_size_before_relax (fragS *fragP ATTRIBUTE_UNUSED,
segT segtype ATTRIBUTE_UNUSED)
{
as_fatal (_("relaxation not supported\n"));
diff --git a/binutils-2.25/gas/config/tc-m68hc11.c b/binutils-2.25/gas/config/tc-m68hc11.c
index 3641912..9026ff4 100644
--- a/binutils-2.25/gas/config/tc-m68hc11.c
+++ b/binutils-2.25/gas/config/tc-m68hc11.c
@@ -3958,7 +3958,7 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, asection *sec ATTRIBUTE_UNUSED,
char *buffer_address = fragP->fr_literal;
/* Address in object code of the displacement. */
- register int object_address = fragP->fr_fix + fragP->fr_address;
+ int object_address = fragP->fr_fix + fragP->fr_address;
buffer_address += fragP->fr_fix;
diff --git a/binutils-2.25/gas/config/tc-m68k.c b/binutils-2.25/gas/config/tc-m68k.c
index 7fc4efe..dbcd87b 100644
--- a/binutils-2.25/gas/config/tc-m68k.c
+++ b/binutils-2.25/gas/config/tc-m68k.c
@@ -1395,11 +1395,11 @@ static struct hash_control *op_hash;
static void
m68k_ip (char *instring)
{
- register char *p;
- register struct m68k_op *opP;
- register const struct m68k_incant *opcode;
- register const char *s;
- register int tmpreg = 0, baseo = 0, outro = 0, nextword;
+ char *p;
+ struct m68k_op *opP;
+ const struct m68k_incant *opcode;
+ const char *s;
+ int tmpreg = 0, baseo = 0, outro = 0, nextword;
char *pdot, *pdotmove;
enum m68k_size siz1, siz2;
char c;
@@ -3955,9 +3955,9 @@ install_gen_operand (int mode, int val)
static char *
crack_operand (char *str, struct m68k_op *opP)
{
- register int parens;
- register int c;
- register char *beg_str;
+ int parens;
+ int c;
+ char *beg_str;
int inquote = 0;
if (!str)
@@ -5033,12 +5033,12 @@ md_convert_frag_1 (fragS *fragP)
fixS *fixP = NULL;
/* Address in object code of the displacement. */
- register int object_address = fragP->fr_fix + fragP->fr_address;
+ int object_address = fragP->fr_fix + fragP->fr_address;
/* Address in gas core of the place to store the displacement. */
/* This convinces the native rs6000 compiler to generate the code we
want. */
- register char *buffer_address = fragP->fr_literal;
+ char *buffer_address = fragP->fr_literal;
buffer_address += fragP->fr_fix;
/* End ibm compiler workaround. */
@@ -5663,8 +5663,8 @@ s_bss (int ignore ATTRIBUTE_UNUSED)
static void
s_even (int ignore ATTRIBUTE_UNUSED)
{
- register int temp;
- register long temp_fill;
+ int temp;
+ long temp_fill;
temp = 1; /* JF should be 2? */
temp_fill = get_absolute_expression ();
diff --git a/binutils-2.25/gas/config/tc-mips.c b/binutils-2.25/gas/config/tc-mips.c
index 0f7e0c5..59f7a73 100644
--- a/binutils-2.25/gas/config/tc-mips.c
+++ b/binutils-2.25/gas/config/tc-mips.c
@@ -510,7 +510,8 @@ static int mips_32bitmode = 0;
#define CPU_HAS_ROR(CPU) CPU_HAS_DROR (CPU)
/* True if CPU is in the Octeon family */
-#define CPU_IS_OCTEON(CPU) ((CPU) == CPU_OCTEON || (CPU) == CPU_OCTEONP || (CPU) == CPU_OCTEON2)
+#define CPU_IS_OCTEON(CPU) ((CPU) == CPU_OCTEON || (CPU) == CPU_OCTEONP \
+ || (CPU) == CPU_OCTEON2 || (CPU) == CPU_OCTEON3)
/* True if CPU has seq/sne and seqi/snei instructions. */
#define CPU_HAS_SEQ(CPU) (CPU_IS_OCTEON (CPU))
@@ -1878,7 +1879,7 @@ static void mips_compressed_mark_labels (void);
static inline void
mips_clear_insn_labels (void)
{
- register struct insn_label_list **pl;
+ struct insn_label_list **pl;
segment_info_type *si;
if (now_seg)
@@ -18825,6 +18826,7 @@ static const struct mips_cpu_info mips_cpu_info_table[] =
{ "octeon", 0, 0, ISA_MIPS64R2, CPU_OCTEON },
{ "octeon+", 0, 0, ISA_MIPS64R2, CPU_OCTEONP },
{ "octeon2", 0, 0, ISA_MIPS64R2, CPU_OCTEON2 },
+ { "octeon3", 0, ASE_VIRT | ASE_VIRT64, ISA_MIPS64R5, CPU_OCTEON3 },
/* RMI Xlr */
{ "xlr", 0, 0, ISA_MIPS64, CPU_XLR },
diff --git a/binutils-2.25/gas/config/tc-mn10200.c b/binutils-2.25/gas/config/tc-mn10200.c
index f76fb08..7462d93 100644
--- a/binutils-2.25/gas/config/tc-mn10200.c
+++ b/binutils-2.25/gas/config/tc-mn10200.c
@@ -686,7 +686,7 @@ void
md_begin (void)
{
char *prev_name = "";
- register const struct mn10200_opcode *op;
+ const struct mn10200_opcode *op;
mn10200_hash = hash_new ();
diff --git a/binutils-2.25/gas/config/tc-nios2.c b/binutils-2.25/gas/config/tc-nios2.c
index 21f4288..7691fd1 100644
--- a/binutils-2.25/gas/config/tc-nios2.c
+++ b/binutils-2.25/gas/config/tc-nios2.c
@@ -139,6 +139,10 @@ typedef struct nios2_insn_info
{
/* Assembled instruction. */
unsigned long insn_code;
+
+ /* Constant bits masked into insn_code for self-check mode. */
+ unsigned long constant_bits;
+
/* Pointer to the relevant bit of the opcode table. */
const struct nios2_opcode *insn_nios2_opcode;
/* After parsing ptrs to the tokens in the instruction fill this array
@@ -152,15 +156,6 @@ typedef struct nios2_insn_info
nios2_insn_relocS *insn_reloc;
} nios2_insn_infoS;
-/* This struct associates an argument assemble function with
- an argument syntax string. Used by the assembler to find out
- how to parse and assemble a set of instruction operands and
- return the instruction field values. */
-typedef struct nios2_arg_info
-{
- const char *args;
- void (*assemble_args_func) (nios2_insn_infoS *insn_info);
-} nios2_arg_infoS;
/* This struct is used to convert Nios II pseudo-ops into the
corresponding real op. */
@@ -196,10 +191,6 @@ static struct hash_control *nios2_reg_hash = NULL;
#define nios2_reg_lookup(NAME) \
((struct nios2_reg *) hash_find (nios2_reg_hash, (NAME)))
-/* Parse args hash table. */
-static struct hash_control *nios2_arg_hash = NULL;
-#define nios2_arg_lookup(NAME) \
- ((nios2_arg_infoS *) hash_find (nios2_arg_hash, (NAME)))
/* Pseudo-op hash table. */
static struct hash_control *nios2_ps_hash = NULL;
@@ -303,27 +294,6 @@ md_atof (int type, char *litP, int *sizeP)
#define strprefix(STR, PREFIX) \
(strncmp ((STR), PREFIX, strlen (PREFIX)) == 0)
-/* Return true if STR is prefixed with a control register name. */
-static int
-nios2_control_register_arg_p (const char *str)
-{
- return (strprefix (str, "ctl")
- || strprefix (str, "cpuid")
- || strprefix (str, "status")
- || strprefix (str, "estatus")
- || strprefix (str, "bstatus")
- || strprefix (str, "ienable")
- || strprefix (str, "ipending")
- || strprefix (str, "exception")
- || strprefix (str, "pteaddr")
- || strprefix (str, "tlbacc")
- || strprefix (str, "tlbmisc")
- || strprefix (str, "eccinj")
- || strprefix (str, "config")
- || strprefix (str, "mpubase")
- || strprefix (str, "mpuacc")
- || strprefix (str, "badaddr"));
-}
/* Return true if STR is prefixed with a special relocation operator. */
static int
@@ -345,24 +315,6 @@ nios2_special_relocation_p (const char *str)
|| strprefix (str, "%gotoff"));
}
-/* Checks whether the register name is a coprocessor
- register - returns TRUE if it is, FALSE otherwise. */
-static bfd_boolean
-nios2_coproc_reg (const char *reg_name)
-{
- gas_assert (reg_name != NULL);
-
- /* Check that we do have a valid register name and that it is a
- coprocessor register.
- It must begin with c, not be a control register, and be a valid
- register name. */
- if (strprefix (reg_name, "c")
- && !strprefix (reg_name, "ctl")
- && hash_find (nios2_reg_hash, reg_name) != NULL)
- return TRUE;
- else
- return FALSE;
-}
/* nop fill pattern for text section. */
static char const nop[4] = { 0x3a, 0x88, 0x01, 0x00 };
@@ -816,9 +768,9 @@ nios2_relax_frag (segT segment, fragS *fragp, long stretch)
target = fragp->fr_next->fr_address + stretch;
}
- /* We subtract 4 because all pc relative branches are
- from the next instruction. */
- offset = target - fragp->fr_address - fragp->fr_fix - 4;
+ /* We subtract fr_var (4 for 32-bit insns) because all pc relative
+ branches are from the next instruction. */
+ offset = target - fragp->fr_address - fragp->fr_fix - fragp->fr_var;
if (offset >= -32768 && offset <= 32764)
/* Fits in PC-relative branch. */
n = 0;
@@ -902,6 +854,7 @@ md_convert_frag (bfd *headers ATTRIBUTE_UNUSED, segT segment ATTRIBUTE_UNUSED,
if (IS_CBRANCH (subtype))
{
unsigned int br_opcode;
+ unsigned int old_op, new_op;
int nbytes;
/* Account for the nextpc and jmp in the pc-relative case, or the two
@@ -912,25 +865,26 @@ md_convert_frag (bfd *headers ATTRIBUTE_UNUSED, segT segment ATTRIBUTE_UNUSED,
nbytes = 12;
br_opcode = md_chars_to_number (buffer, 4);
- switch (br_opcode & OP_MASK_OP)
+ old_op = GET_IW_R1_OP (br_opcode);
+ switch (old_op)
{
- case OP_MATCH_BEQ:
- br_opcode = (br_opcode & ~OP_MASK_OP) | OP_MATCH_BNE;
+ case R1_OP_BEQ:
+ new_op = R1_OP_BNE;
break;
- case OP_MATCH_BNE:
- br_opcode = (br_opcode & ~OP_MASK_OP) | OP_MATCH_BEQ ;
+ case R1_OP_BNE:
+ new_op = R1_OP_BEQ;
break;
- case OP_MATCH_BGE:
- br_opcode = (br_opcode & ~OP_MASK_OP) | OP_MATCH_BLT ;
+ case R1_OP_BGE:
+ new_op = R1_OP_BLT;
break;
- case OP_MATCH_BGEU:
- br_opcode = (br_opcode & ~OP_MASK_OP) | OP_MATCH_BLTU ;
+ case R1_OP_BGEU:
+ new_op = R1_OP_BLTU;
break;
- case OP_MATCH_BLT:
- br_opcode = (br_opcode & ~OP_MASK_OP) | OP_MATCH_BGE ;
+ case R1_OP_BLT:
+ new_op = R1_OP_BGE;
break;
- case OP_MATCH_BLTU:
- br_opcode = (br_opcode & ~OP_MASK_OP) | OP_MATCH_BGEU ;
+ case R1_OP_BLTU:
+ new_op = R1_OP_BGEU;
break;
default:
as_bad_where (fragp->fr_file, fragp->fr_line,
@@ -938,7 +892,8 @@ md_convert_frag (bfd *headers ATTRIBUTE_UNUSED, segT segment ATTRIBUTE_UNUSED,
abort ();
}
- br_opcode = br_opcode | (nbytes << OP_SH_IMM16);
+ br_opcode = (br_opcode & ~IW_R1_OP_SHIFTED_MASK) | SET_IW_R1_OP (new_op);
+ br_opcode = br_opcode | SET_IW_I_IMM16 (nbytes);
md_number_to_chars (buffer, br_opcode, 4);
fragp->fr_fix += 4;
buffer += 4;
@@ -949,7 +904,7 @@ md_convert_frag (bfd *headers ATTRIBUTE_UNUSED, segT segment ATTRIBUTE_UNUSED,
{
/* Insert the nextpc instruction. */
md_number_to_chars (buffer,
- OP_MATCH_NEXTPC | (AT_REGNUM << OP_SH_RRD), 4);
+ MATCH_R1_NEXTPC | SET_IW_R_C (AT_REGNUM), 4);
fragp->fr_fix += 4;
buffer += 4;
@@ -960,12 +915,12 @@ md_convert_frag (bfd *headers ATTRIBUTE_UNUSED, segT segment ATTRIBUTE_UNUSED,
addend = 32767;
else
addend = -32768;
- addend_mask = (((unsigned int)addend) & 0xffff) << OP_SH_IMM16;
+ addend_mask = SET_IW_I_IMM16 ((unsigned int)addend);
/* Insert n-1 addi instructions. */
- addi_mask = (OP_MATCH_ADDI
- | (AT_REGNUM << OP_SH_IRD)
- | (AT_REGNUM << OP_SH_IRS));
+ addi_mask = (MATCH_R1_ADDI
+ | SET_IW_I_B (AT_REGNUM)
+ | SET_IW_I_A (AT_REGNUM));
for (i = 0; i < n - 1; i ++)
{
md_number_to_chars (buffer, addi_mask | addend_mask, 4);
@@ -976,7 +931,7 @@ md_convert_frag (bfd *headers ATTRIBUTE_UNUSED, segT segment ATTRIBUTE_UNUSED,
/* Insert the last addi instruction to hold the remainder. */
remainder = offset - addend * (n - 1);
gas_assert (remainder >= -32768 && remainder <= 32767);
- addend_mask = (((unsigned int)remainder) & 0xffff) << OP_SH_IMM16;
+ addend_mask = SET_IW_I_IMM16 ((unsigned int)remainder);
md_number_to_chars (buffer, addi_mask | addend_mask, 4);
fragp->fr_fix += 4;
buffer += 4;
@@ -985,12 +940,18 @@ md_convert_frag (bfd *headers ATTRIBUTE_UNUSED, segT segment ATTRIBUTE_UNUSED,
/* Load at for the absolute case. */
else
{
- md_number_to_chars (buffer, OP_MATCH_ORHI | 0x00400000, 4);
+ md_number_to_chars (buffer,
+ (MATCH_R1_ORHI | SET_IW_I_B (AT_REGNUM)
+ | SET_IW_I_A (0)),
+ 4);
fix_new (fragp, fragp->fr_fix, 4, fragp->fr_symbol, fragp->fr_offset,
0, BFD_RELOC_NIOS2_HI16);
fragp->fr_fix += 4;
buffer += 4;
- md_number_to_chars (buffer, OP_MATCH_ORI | 0x08400000, 4);
+ md_number_to_chars (buffer,
+ (MATCH_R1_ORI | SET_IW_I_B (AT_REGNUM)
+ | SET_IW_I_A (AT_REGNUM)),
+ 4);
fix_new (fragp, fragp->fr_fix, 4, fragp->fr_symbol, fragp->fr_offset,
0, BFD_RELOC_NIOS2_LO16);
fragp->fr_fix += 4;
@@ -998,7 +959,7 @@ md_convert_frag (bfd *headers ATTRIBUTE_UNUSED, segT segment ATTRIBUTE_UNUSED,
}
/* Insert the jmp instruction. */
- md_number_to_chars (buffer, OP_MATCH_JMP | (AT_REGNUM << OP_SH_RRS), 4);
+ md_number_to_chars (buffer, MATCH_R1_JMP | SET_IW_R_A (AT_REGNUM), 4);
fragp->fr_fix += 4;
buffer += 4;
}
@@ -1071,9 +1032,10 @@ nios2_diagnose_overflow (valueT fixup, reloc_howto_type *howto,
unsigned int range_min;
unsigned int range_max;
unsigned int address;
- gas_assert (fixP->fx_size == 4);
- opcode = nios2_find_opcode_hash (value);
+
+ opcode = nios2_find_opcode_hash (value, bfd_get_mach (stdoutput));
gas_assert (opcode);
+ gas_assert (fixP->fx_size == opcode->size);
overflow_msg_type = opcode->overflow_msg;
switch (overflow_msg_type)
{
@@ -1240,7 +1202,8 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
FIXME : for some reason fixP->fx_pcrel isn't 1 when it should be
so I'm using the howto structure instead to determine this. */
if (howto->pc_relative == 1)
- fixup = fixup - (fixP->fx_frag->fr_address + fixP->fx_where + 4);
+ fixup = fixup - (fixP->fx_frag->fr_address + fixP->fx_where
+ + fixP->fx_size);
/* Get the instruction or data to be fixed up. */
buf = fixP->fx_frag->fr_literal + fixP->fx_where;
@@ -1297,6 +1260,16 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
/** Instruction parsing support. */
+/* General internal error routine. */
+
+static void
+bad_opcode (const struct nios2_opcode *op)
+{
+ fprintf (stderr, _("internal error: broken opcode descriptor for `%s %s'\n"),
+ op->name, op->args);
+ as_fatal (_("Broken assembler. No assembly attempted."));
+}
+
/* Special relocation directive strings. */
struct nios2_special_relocS
@@ -1363,6 +1336,54 @@ nios2_insn_reloc_destroy (nios2_insn_relocS *reloc)
}
#endif
+/* Look up a register name and validate it for the given regtype.
+ Return the register mapping or NULL on failure. */
+static struct nios2_reg *
+nios2_parse_reg (const char *token, unsigned long regtype)
+{
+ struct nios2_reg *reg = nios2_reg_lookup (token);
+
+ if (reg == NULL)
+ {
+ as_bad (_("unknown register %s"), token);
+ return NULL;
+ }
+
+ /* Matched a register, but is it the wrong type? */
+ if (!(regtype & reg->regtype))
+ {
+ if (regtype & REG_CONTROL)
+ as_bad (_("expecting control register"));
+ else if (reg->regtype & REG_CONTROL)
+ as_bad (_("illegal use of control register"));
+ else if (reg->regtype & REG_COPROCESSOR)
+ as_bad (_("illegal use of coprocessor register"));
+ else
+ as_bad (_("invalid register %s"), token);
+ return NULL;
+ }
+
+ /* Warn for explicit use of special registers. */
+ if (reg->regtype & REG_NORMAL)
+ {
+ if (!nios2_as_options.noat && reg->index == 1)
+ as_warn (_("Register at (r1) can sometimes be corrupted by "
+ "assembler optimizations.\n"
+ "Use .set noat to turn off those optimizations "
+ "(and this warning)."));
+ if (!nios2_as_options.nobreak && reg->index == 25)
+ as_warn (_("The debugger will corrupt bt (r25).\n"
+ "If you don't need to debug this "
+ "code use .set nobreak to turn off this warning."));
+ if (!nios2_as_options.nobreak && reg->index == 30)
+ as_warn (_("The debugger will corrupt sstatus/ba (r30).\n"
+ "If you don't need to debug this "
+ "code use .set nobreak to turn off this warning."));
+ }
+
+ return reg;
+}
+
/* The various nios2_assemble_* functions call this
function to generate an expression from a string representing an expression.
It then tries to evaluate the expression, and if it can, returns its value.
@@ -1371,7 +1392,6 @@ nios2_insn_reloc_destroy (nios2_insn_relocS *reloc)
static unsigned long
nios2_assemble_expression (const char *exprstr,
nios2_insn_infoS *insn,
- nios2_insn_relocS *prev_reloc,
bfd_reloc_code_real_type reloc_type,
unsigned int pcrel)
{
@@ -1407,10 +1427,8 @@ nios2_assemble_expression (const char *exprstr,
/* We potentially have a relocation. */
reloc = nios2_insn_reloc_new (reloc_type, pcrel);
- if (prev_reloc != NULL)
- prev_reloc->reloc_next = reloc;
- else
- insn->insn_reloc = reloc;
+ reloc->reloc_next = insn->insn_reloc;
+ insn->insn_reloc = reloc;
/* Parse the expression string. */
saved_line_ptr = input_line_pointer;
@@ -1429,480 +1447,310 @@ nios2_assemble_expression (const char *exprstr,
return (unsigned long) value;
}
-/* Argument assemble functions.
- All take an instruction argument string, and a pointer
- to an instruction opcode. Upon return the insn_opcode
- has the relevant fields filled in to represent the arg
- string. The return value is NULL if successful, or
- an error message if an error was detected.
-
- The naming conventions for these functions match the args template
- in the nios2_opcode structure, as documented in include/opcode/nios2.h.
- For example, nios2_assemble_args_dst is used for instructions with
- "d,s,t" args.
- See nios2_arg_info_structs below for the exact correspondence. */
-static void
-nios2_assemble_args_dst (nios2_insn_infoS *insn_info)
+/* Argument assemble functions. */
+static void
+nios2_assemble_arg_c (const char *token, nios2_insn_infoS *insn)
{
- if (insn_info->insn_tokens[1] != NULL
- && insn_info->insn_tokens[2] != NULL
- && insn_info->insn_tokens[3] != NULL)
- {
- struct nios2_reg *dst = nios2_reg_lookup (insn_info->insn_tokens[1]);
- struct nios2_reg *src1 = nios2_reg_lookup (insn_info->insn_tokens[2]);
- struct nios2_reg *src2 = nios2_reg_lookup (insn_info->insn_tokens[3]);
-
- if (dst == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
- else
- SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
+ struct nios2_reg *reg = nios2_parse_reg (token, REG_CONTROL);
+ const struct nios2_opcode *op = insn->insn_nios2_opcode;
- if (src1 == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
- else
- SET_INSN_FIELD (RRS, insn_info->insn_code, src1->index);
-
- if (src2 == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[3]);
- else
- SET_INSN_FIELD (RRT, insn_info->insn_code, src2->index);
+ if (reg == NULL)
+ return;
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[4]);
+ switch (op->format)
+ {
+ case iw_r_type:
+ insn->insn_code |= SET_IW_R_IMM5 (reg->index);
+ break;
+ default:
+ bad_opcode (op);
}
}
-static void
-nios2_assemble_args_tsi (nios2_insn_infoS *insn_info)
+static void
+nios2_assemble_arg_d (const char *token, nios2_insn_infoS *insn)
{
- if (insn_info->insn_tokens[1] != NULL &&
- insn_info->insn_tokens[2] != NULL && insn_info->insn_tokens[3] != NULL)
- {
- struct nios2_reg *dst = nios2_reg_lookup (insn_info->insn_tokens[1]);
- struct nios2_reg *src1 = nios2_reg_lookup (insn_info->insn_tokens[2]);
- unsigned int src2
- = nios2_assemble_expression (insn_info->insn_tokens[3], insn_info,
- insn_info->insn_reloc, BFD_RELOC_NIOS2_S16,
- 0);
-
- if (dst == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
- else
- SET_INSN_FIELD (IRT, insn_info->insn_code, dst->index);
-
- if (src1 == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
- else
- SET_INSN_FIELD (IRS, insn_info->insn_code, src1->index);
+ const struct nios2_opcode *op = insn->insn_nios2_opcode;
+ unsigned long regtype = REG_NORMAL;
+ struct nios2_reg *reg;
- SET_INSN_FIELD (IMM16, insn_info->insn_code, src2);
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[4]);
- SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
- }
-}
+ if (op->format == iw_custom_type)
+ regtype |= REG_COPROCESSOR;
+ reg = nios2_parse_reg (token, regtype);
+ if (reg == NULL)
+ return;
-static void
-nios2_assemble_args_tsu (nios2_insn_infoS *insn_info)
-{
- if (insn_info->insn_tokens[1] != NULL
- && insn_info->insn_tokens[2] != NULL
- && insn_info->insn_tokens[3] != NULL)
+ switch (op->format)
{
- struct nios2_reg *dst = nios2_reg_lookup (insn_info->insn_tokens[1]);
- struct nios2_reg *src1 = nios2_reg_lookup (insn_info->insn_tokens[2]);
- unsigned int src2
- = nios2_assemble_expression (insn_info->insn_tokens[3], insn_info,
- insn_info->insn_reloc, BFD_RELOC_NIOS2_U16,
- 0);
-
- if (dst == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
- else
- SET_INSN_FIELD (IRT, insn_info->insn_code, dst->index);
-
- if (src1 == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
+ case iw_r_type:
+ insn->insn_code |= SET_IW_R_C (reg->index);
+ break;
+ case iw_custom_type:
+ insn->insn_code |= SET_IW_CUSTOM_C (reg->index);
+ if (reg->regtype & REG_COPROCESSOR)
+ insn->insn_code |= SET_IW_CUSTOM_READC (0);
else
- SET_INSN_FIELD (IRS, insn_info->insn_code, src1->index);
-
- SET_INSN_FIELD (IMM16, insn_info->insn_code, src2);
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[4]);
- SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
+ insn->insn_code |= SET_IW_CUSTOM_READC (1);
+ break;
+ default:
+ bad_opcode (op);
}
}
-static void
-nios2_assemble_args_sto (nios2_insn_infoS *insn_info)
+static void
+nios2_assemble_arg_s (const char *token, nios2_insn_infoS *insn)
{
- if (insn_info->insn_tokens[1] != NULL
- && insn_info->insn_tokens[2] != NULL
- && insn_info->insn_tokens[3] != NULL)
- {
- struct nios2_reg *dst = nios2_reg_lookup (insn_info->insn_tokens[1]);
- struct nios2_reg *src1 = nios2_reg_lookup (insn_info->insn_tokens[2]);
- unsigned int src2
- = nios2_assemble_expression (insn_info->insn_tokens[3], insn_info,
- insn_info->insn_reloc, BFD_RELOC_16_PCREL,
- 1);
-
- if (dst == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
- else
- SET_INSN_FIELD (IRS, insn_info->insn_code, dst->index);
+ const struct nios2_opcode *op = insn->insn_nios2_opcode;
+ unsigned long regtype = REG_NORMAL;
+ struct nios2_reg *reg;
- if (src1 == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
- else
- SET_INSN_FIELD (IRT, insn_info->insn_code, src1->index);
+ if (op->format == iw_custom_type)
+ regtype |= REG_COPROCESSOR;
+ reg = nios2_parse_reg (token, regtype);
+ if (reg == NULL)
+ return;
- SET_INSN_FIELD (IMM16, insn_info->insn_code, src2);
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[4]);
- SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
- }
-}
-
-static void
-nios2_assemble_args_o (nios2_insn_infoS *insn_info)
-{
- if (insn_info->insn_tokens[1] != NULL)
+ switch (op->format)
{
- unsigned long immed
- = nios2_assemble_expression (insn_info->insn_tokens[1], insn_info,
- insn_info->insn_reloc, BFD_RELOC_16_PCREL,
- 1);
- SET_INSN_FIELD (IMM16, insn_info->insn_code, immed);
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[2]);
- SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
+ case iw_r_type:
+ insn->insn_code |= SET_IW_R_A (reg->index);
+ break;
+ case iw_i_type:
+ insn->insn_code |= SET_IW_I_A (reg->index);
+ break;
+ case iw_custom_type:
+ insn->insn_code |= SET_IW_CUSTOM_A (reg->index);
+ if (reg->regtype & REG_COPROCESSOR)
+ insn->insn_code |= SET_IW_CUSTOM_READA (0);
+ else
+ insn->insn_code |= SET_IW_CUSTOM_READA (1);
+ break;
+ default:
+ bad_opcode (op);
}
}
-static void
-nios2_assemble_args_is (nios2_insn_infoS *insn_info)
+static void
+nios2_assemble_arg_t (const char *token, nios2_insn_infoS *insn)
{
- if (insn_info->insn_tokens[1] != NULL && insn_info->insn_tokens[2] != NULL)
- {
- struct nios2_reg *addr_src = nios2_reg_lookup (insn_info->insn_tokens[2]);
- unsigned long immed
- = nios2_assemble_expression (insn_info->insn_tokens[1], insn_info,
- insn_info->insn_reloc, BFD_RELOC_NIOS2_S16,
- 0);
+ const struct nios2_opcode *op = insn->insn_nios2_opcode;
+ unsigned long regtype = REG_NORMAL;
+ struct nios2_reg *reg;
- SET_INSN_FIELD (IMM16, insn_info->insn_code, immed);
+ if (op->format == iw_custom_type)
+ regtype |= REG_COPROCESSOR;
+ reg = nios2_parse_reg (token, regtype);
+ if (reg == NULL)
+ return;
- if (addr_src == NULL)
- as_bad (_("unknown base register %s"), insn_info->insn_tokens[2]);
+ switch (op->format)
+ {
+ case iw_r_type:
+ insn->insn_code |= SET_IW_R_B (reg->index);
+ break;
+ case iw_i_type:
+ insn->insn_code |= SET_IW_I_B (reg->index);
+ break;
+ case iw_custom_type:
+ insn->insn_code |= SET_IW_CUSTOM_B (reg->index);
+ if (reg->regtype & REG_COPROCESSOR)
+ insn->insn_code |= SET_IW_CUSTOM_READB (0);
else
- SET_INSN_FIELD (RRS, insn_info->insn_code, addr_src->index);
-
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[3]);
- SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
+ insn->insn_code |= SET_IW_CUSTOM_READB (1);
+ break;
+ default:
+ bad_opcode (op);
}
}
-static void
-nios2_assemble_args_m (nios2_insn_infoS *insn_info)
+static void
+nios2_assemble_arg_i (const char *token, nios2_insn_infoS *insn)
{
- if (insn_info->insn_tokens[1] != NULL)
- {
- unsigned long immed
- = nios2_assemble_expression (insn_info->insn_tokens[1], insn_info,
- insn_info->insn_reloc,
- (nios2_as_options.noat
- ? BFD_RELOC_NIOS2_CALL26_NOAT
- : BFD_RELOC_NIOS2_CALL26),
- 0);
-
- SET_INSN_FIELD (IMM26, insn_info->insn_code, immed);
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[2]);
- SET_INSN_FIELD (IMM26, insn_info->insn_code, 0);
- }
-}
+ const struct nios2_opcode *op = insn->insn_nios2_opcode;
+ unsigned int val;
-static void
-nios2_assemble_args_s (nios2_insn_infoS *insn_info)
-{
- if (insn_info->insn_tokens[1] != NULL)
+ switch (op->format)
{
- struct nios2_reg *src = nios2_reg_lookup (insn_info->insn_tokens[1]);
- if (src == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
- else
- SET_INSN_FIELD (RRS, insn_info->insn_code, src->index);
-
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[2]);
+ case iw_i_type:
+ val = nios2_assemble_expression (token, insn,
+ BFD_RELOC_NIOS2_S16, 0);
+ insn->constant_bits |= SET_IW_I_IMM16 (val);
+ break;
+ default:
+ bad_opcode (op);
}
}
-static void
-nios2_assemble_args_tis (nios2_insn_infoS *insn_info)
+static void
+nios2_assemble_arg_u (const char *token, nios2_insn_infoS *insn)
{
- if (insn_info->insn_tokens[1] != NULL
- && insn_info->insn_tokens[2] != NULL
- && insn_info->insn_tokens[3] != NULL)
- {
- struct nios2_reg *dst = nios2_reg_lookup (insn_info->insn_tokens[1]);
- struct nios2_reg *addr_src = nios2_reg_lookup (insn_info->insn_tokens[3]);
- unsigned long immed
- = nios2_assemble_expression (insn_info->insn_tokens[2], insn_info,
- insn_info->insn_reloc, BFD_RELOC_NIOS2_S16,
- 0);
-
- if (addr_src == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[3]);
- else
- SET_INSN_FIELD (RRS, insn_info->insn_code, addr_src->index);
-
- if (dst == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
- else
- SET_INSN_FIELD (RRT, insn_info->insn_code, dst->index);
+ const struct nios2_opcode *op = insn->insn_nios2_opcode;
+ unsigned int val;
- SET_INSN_FIELD (IMM16, insn_info->insn_code, immed);
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[4]);
- SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
- }
-}
-
-static void
-nios2_assemble_args_dc (nios2_insn_infoS *insn_info)
-{
- if (insn_info->insn_tokens[1] != NULL && insn_info->insn_tokens[2] != NULL)
+ switch (op->format)
{
- struct nios2_reg *ctl = nios2_reg_lookup (insn_info->insn_tokens[2]);
- struct nios2_reg *dst = nios2_reg_lookup (insn_info->insn_tokens[1]);
-
- if (ctl == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
- else
- SET_INSN_FIELD (RCTL, insn_info->insn_code, ctl->index);
-
- if (dst == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
- else
- SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
-
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[3]);
+ case iw_i_type:
+ val = nios2_assemble_expression (token, insn,
+ BFD_RELOC_NIOS2_U16, 0);
+ insn->constant_bits |= SET_IW_I_IMM16 (val);
+ break;
+ default:
+ bad_opcode (op);
}
}
-static void
-nios2_assemble_args_cs (nios2_insn_infoS *insn_info)
+static void
+nios2_assemble_arg_o (const char *token, nios2_insn_infoS *insn)
{
- if (insn_info->insn_tokens[1] != NULL && insn_info->insn_tokens[2] != NULL)
- {
- struct nios2_reg *ctl = nios2_reg_lookup (insn_info->insn_tokens[1]);
- struct nios2_reg *src = nios2_reg_lookup (insn_info->insn_tokens[2]);
-
- if (ctl == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
- else if (ctl->index == 4)
- as_bad (_("ipending control register (ctl4) is read-only\n"));
- else
- SET_INSN_FIELD (RCTL, insn_info->insn_code, ctl->index);
+ const struct nios2_opcode *op = insn->insn_nios2_opcode;
+ unsigned int val;
- if (src == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
- else
- SET_INSN_FIELD (RRS, insn_info->insn_code, src->index);
-
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[3]);
+ switch (op->format)
+ {
+ case iw_i_type:
+ val = nios2_assemble_expression (token, insn,
+ BFD_RELOC_16_PCREL, 1);
+ insn->constant_bits |= SET_IW_I_IMM16 (val);
+ break;
+ default:
+ bad_opcode (op);
}
}
-static void
-nios2_assemble_args_ds (nios2_insn_infoS * insn_info)
+static void
+nios2_assemble_arg_j (const char *token, nios2_insn_infoS *insn)
{
- if (insn_info->insn_tokens[1] != NULL && insn_info->insn_tokens[2] != NULL)
- {
- struct nios2_reg *dst = nios2_reg_lookup (insn_info->insn_tokens[1]);
- struct nios2_reg *src = nios2_reg_lookup (insn_info->insn_tokens[2]);
-
- if (dst == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
- else
- SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
-
- if (src == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
- else
- SET_INSN_FIELD (RRS, insn_info->insn_code, src->index);
+ const struct nios2_opcode *op = insn->insn_nios2_opcode;
+ unsigned int val;
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[3]);
+ switch (op->format)
+ {
+ case iw_r_type:
+ val = nios2_assemble_expression (token, insn,
+ BFD_RELOC_NIOS2_IMM5, 0);
+ insn->constant_bits |= SET_IW_R_IMM5 (val);
+ break;
+ default:
+ bad_opcode (op);
}
}
-static void
-nios2_assemble_args_ldst (nios2_insn_infoS *insn_info)
+static void
+nios2_assemble_arg_l (const char *token, nios2_insn_infoS *insn)
{
- if (insn_info->insn_tokens[1] != NULL
- && insn_info->insn_tokens[2] != NULL
- && insn_info->insn_tokens[3] != NULL
- && insn_info->insn_tokens[4] != NULL)
- {
- unsigned long custom_n
- = nios2_assemble_expression (insn_info->insn_tokens[1], insn_info,
- insn_info->insn_reloc,
- BFD_RELOC_NIOS2_IMM8, 0);
-
- struct nios2_reg *dst = nios2_reg_lookup (insn_info->insn_tokens[2]);
- struct nios2_reg *src1 = nios2_reg_lookup (insn_info->insn_tokens[3]);
- struct nios2_reg *src2 = nios2_reg_lookup (insn_info->insn_tokens[4]);
+ const struct nios2_opcode *op = insn->insn_nios2_opcode;
+ unsigned int val;
- SET_INSN_FIELD (CUSTOM_N, insn_info->insn_code, custom_n);
-
- if (dst == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
- else
- SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
-
- if (src1 == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[3]);
- else
- SET_INSN_FIELD (RRS, insn_info->insn_code, src1->index);
-
- if (src2 == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[4]);
- else
- SET_INSN_FIELD (RRT, insn_info->insn_code, src2->index);
-
- /* Set or clear the bits to indicate whether coprocessor registers are
- used. */
- if (nios2_coproc_reg (insn_info->insn_tokens[2]))
- SET_INSN_FIELD (CUSTOM_C, insn_info->insn_code, 0);
- else
- SET_INSN_FIELD (CUSTOM_C, insn_info->insn_code, 1);
-
- if (nios2_coproc_reg (insn_info->insn_tokens[3]))
- SET_INSN_FIELD (CUSTOM_A, insn_info->insn_code, 0);
- else
- SET_INSN_FIELD (CUSTOM_A, insn_info->insn_code, 1);
-
- if (nios2_coproc_reg (insn_info->insn_tokens[4]))
- SET_INSN_FIELD (CUSTOM_B, insn_info->insn_code, 0);
- else
- SET_INSN_FIELD (CUSTOM_B, insn_info->insn_code, 1);
-
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[5]);
+ switch (op->format)
+ {
+ case iw_custom_type:
+ val = nios2_assemble_expression (token, insn,
+ BFD_RELOC_NIOS2_IMM8, 0);
+ insn->constant_bits |= SET_IW_CUSTOM_N (val);
+ break;
+ default:
+ bad_opcode (op);
}
}
-static void
-nios2_assemble_args_none (nios2_insn_infoS *insn_info ATTRIBUTE_UNUSED)
+static void
+nios2_assemble_arg_m (const char *token, nios2_insn_infoS *insn)
{
- /* Nothing to do. */
-}
+ const struct nios2_opcode *op = insn->insn_nios2_opcode;
+ unsigned int val;
-static void
-nios2_assemble_args_dsj (nios2_insn_infoS *insn_info)
-{
- if (insn_info->insn_tokens[1] != NULL
- && insn_info->insn_tokens[2] != NULL
- && insn_info->insn_tokens[3] != NULL)
+ switch (op->format)
{
- struct nios2_reg *dst = nios2_reg_lookup (insn_info->insn_tokens[1]);
- struct nios2_reg *src1 = nios2_reg_lookup (insn_info->insn_tokens[2]);
-
- /* A 5-bit constant expression. */
- unsigned int src2 =
- nios2_assemble_expression (insn_info->insn_tokens[3], insn_info,
- insn_info->insn_reloc,
- BFD_RELOC_NIOS2_IMM5, 0);
-
- if (dst == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
- else
- SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
-
- if (src1 == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
- else
- SET_INSN_FIELD (RRS, insn_info->insn_code, src1->index);
-
- SET_INSN_FIELD (IMM5, insn_info->insn_code, src2);
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[4]);
- SET_INSN_FIELD (IMM5, insn_info->insn_code, 0);
+ case iw_j_type:
+ val = nios2_assemble_expression (token, insn,
+ (nios2_as_options.noat
+ ? BFD_RELOC_NIOS2_CALL26_NOAT
+ : BFD_RELOC_NIOS2_CALL26),
+ 0);
+ insn->constant_bits |= SET_IW_J_IMM26 (val);
+ break;
+ default:
+ bad_opcode (op);
}
}
static void
-nios2_assemble_args_d (nios2_insn_infoS *insn_info)
+nios2_assemble_args (nios2_insn_infoS *insn)
{
- if (insn_info->insn_tokens[1] != NULL)
- {
- struct nios2_reg *dst = nios2_reg_lookup (insn_info->insn_tokens[1]);
-
- if (dst == NULL)
- as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
- else
- SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
+ const struct nios2_opcode *op = insn->insn_nios2_opcode;
+ const char *argptr;
+ unsigned int tokidx, ntok;
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[2]);
- }
-}
+ /* Make sure there are enough arguments. */
+ ntok = (op->pinfo & NIOS2_INSN_OPTARG) ? op->num_args - 1 : op->num_args;
+ for (tokidx = 1; tokidx <= ntok; tokidx++)
+ if (insn->insn_tokens[tokidx] == NULL)
+ {
+ as_bad ("missing argument");
+ return;
+ }
-static void
-nios2_assemble_args_b (nios2_insn_infoS *insn_info)
-{
- unsigned int imm5 = 0;
+ for (argptr = op->args, tokidx = 1;
+ *argptr && insn->insn_tokens[tokidx];
+ argptr++)
+ switch (*argptr)
+ {
+ case ',':
+ case '(':
+ case ')':
+ break;
- if (insn_info->insn_tokens[1] != NULL)
- {
- /* A 5-bit constant expression. */
- imm5 = nios2_assemble_expression (insn_info->insn_tokens[1],
- insn_info, insn_info->insn_reloc,
- BFD_RELOC_NIOS2_IMM5, 0);
- SET_INSN_FIELD (TRAP_IMM5, insn_info->insn_code, imm5);
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[2]);
- }
+ case 'c':
+ nios2_assemble_arg_c (insn->insn_tokens[tokidx++], insn);
+ break;
+
+ case 'd':
+ nios2_assemble_arg_d (insn->insn_tokens[tokidx++], insn);
+ break;
+
+ case 's':
+ nios2_assemble_arg_s (insn->insn_tokens[tokidx++], insn);
+ break;
+
+ case 't':
+ nios2_assemble_arg_t (insn->insn_tokens[tokidx++], insn);
+ break;
+
+ case 'i':
+ nios2_assemble_arg_i (insn->insn_tokens[tokidx++], insn);
+ break;
+
+ case 'u':
+ nios2_assemble_arg_u (insn->insn_tokens[tokidx++], insn);
+ break;
+
+ case 'o':
+ nios2_assemble_arg_o (insn->insn_tokens[tokidx++], insn);
+ break;
+
+ case 'j':
+ nios2_assemble_arg_j (insn->insn_tokens[tokidx++], insn);
+ break;
+
+ case 'l':
+ nios2_assemble_arg_l (insn->insn_tokens[tokidx++], insn);
+ break;
+
+ case 'm':
+ nios2_assemble_arg_m (insn->insn_tokens[tokidx++], insn);
+ break;
+
+ default:
+ bad_opcode (op);
+ break;
+ }
- SET_INSN_FIELD (TRAP_IMM5, insn_info->insn_code, imm5);
-
- nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[2]);
-}
-
-/* This table associates pointers to functions that parse the arguments to an
- instruction and fill in the relevant fields of the instruction. */
-const nios2_arg_infoS nios2_arg_info_structs[] = {
- /* args, assemble_args_func */
- {"d,s,t", nios2_assemble_args_dst},
- {"d,s,t,E", nios2_assemble_args_dst},
- {"t,s,i", nios2_assemble_args_tsi},
- {"t,s,i,E", nios2_assemble_args_tsi},
- {"t,s,u", nios2_assemble_args_tsu},
- {"t,s,u,E", nios2_assemble_args_tsu},
- {"s,t,o", nios2_assemble_args_sto},
- {"s,t,o,E", nios2_assemble_args_sto},
- {"o", nios2_assemble_args_o},
- {"o,E", nios2_assemble_args_o},
- {"s", nios2_assemble_args_s},
- {"s,E", nios2_assemble_args_s},
- {"", nios2_assemble_args_none},
- {"E", nios2_assemble_args_none},
- {"i(s)", nios2_assemble_args_is},
- {"i(s)E", nios2_assemble_args_is},
- {"m", nios2_assemble_args_m},
- {"m,E", nios2_assemble_args_m},
- {"t,i(s)", nios2_assemble_args_tis},
- {"t,i(s)E", nios2_assemble_args_tis},
- {"d,c", nios2_assemble_args_dc},
- {"d,c,E", nios2_assemble_args_dc},
- {"c,s", nios2_assemble_args_cs},
- {"c,s,E", nios2_assemble_args_cs},
- {"d,s", nios2_assemble_args_ds},
- {"d,s,E", nios2_assemble_args_ds},
- {"l,d,s,t", nios2_assemble_args_ldst},
- {"l,d,s,t,E", nios2_assemble_args_ldst},
- {"d,s,j", nios2_assemble_args_dsj},
- {"d,s,j,E", nios2_assemble_args_dsj},
- {"d", nios2_assemble_args_d},
- {"d,E", nios2_assemble_args_d},
- {"b", nios2_assemble_args_b},
- {"b,E", nios2_assemble_args_b}
-};
+ /* Perform argument checking. */
+ nios2_check_assembly (insn->insn_code | insn->constant_bits,
+ insn->insn_tokens[tokidx]);
+}
-#define NIOS2_NUM_ARGS \
- ((sizeof(nios2_arg_info_structs)/sizeof(nios2_arg_info_structs[0])))
-const int nios2_num_arg_info_structs = NIOS2_NUM_ARGS;
/* The function consume_arg takes a pointer into a string
of instruction tokens (args) and a pointer into a string
@@ -1911,73 +1759,18 @@ const int nios2_num_arg_info_structs = NIOS2_NUM_ARGS;
expected type, throwing an error if it is not, and returns
the pointer argstr. */
static char *
-nios2_consume_arg (nios2_insn_infoS *insn, char *argstr, const char *parsestr)
+nios2_consume_arg (char *argstr, const char *parsestr)
{
char *temp;
- int regno = -1;
switch (*parsestr)
{
case 'c':
- if (!nios2_control_register_arg_p (argstr))
- as_bad (_("expecting control register"));
- break;
case 'd':
case 's':
case 't':
-
- /* We check to make sure we don't have a control register. */
- if (nios2_control_register_arg_p (argstr))
- as_bad (_("illegal use of control register"));
-
- /* And whether coprocessor registers are valid here. */
- if (nios2_coproc_reg (argstr)
- && insn->insn_nios2_opcode->match != OP_MATCH_CUSTOM)
- as_bad (_("illegal use of coprocessor register\n"));
-
- /* Extract a register number if the register is of the
- form r[0-9]+, if it is a normal register, set
- regno to its number (0-31), else set regno to -1. */
- if (argstr[0] == 'r' && ISDIGIT (argstr[1]))
- {
- char *p = argstr;
-
- ++p;
- regno = 0;
- do
- {
- regno *= 10;
- regno += *p - '0';
- ++p;
- }
- while (ISDIGIT (*p));
- }
- else
- regno = -1;
-
- /* And whether we are using at. */
- if (!nios2_as_options.noat
- && (regno == 1 || strprefix (argstr, "at")))
- as_warn (_("Register at (r1) can sometimes be corrupted by assembler "
- "optimizations.\n"
- "Use .set noat to turn off those optimizations (and this "
- "warning)."));
-
- /* And whether we are using oci registers. */
- if (!nios2_as_options.nobreak
- && (regno == 25 || strprefix (argstr, "bt")))
- as_warn (_("The debugger will corrupt bt (r25).\n"
- "If you don't need to debug this "
- "code use .set nobreak to turn off this warning."));
-
- if (!nios2_as_options.nobreak
- && (regno == 30
- || strprefix (argstr, "ba")
- || strprefix (argstr, "sstatus")))
- as_warn (_("The debugger will corrupt sstatus/ba (r30).\n"
- "If you don't need to debug this "
- "code use .set nobreak to turn off this warning."));
break;
+
case 'i':
case 'u':
if (*argstr == '%')
@@ -2000,7 +1793,6 @@ nios2_consume_arg (nios2_insn_infoS *insn, char *argstr, const char *parsestr)
case 'm':
case 'j':
case 'l':
- case 'b':
/* We can't have %hi, %lo or %hiadj here. */
if (*argstr == '%')
as_bad (_("badly formed expression near %s"), argstr);
@@ -2038,8 +1830,6 @@ nios2_consume_separator (char *argstr, const char *separator)
if (p != NULL)
*p++ = 0;
- else
- as_bad (_("expecting %c near %s"), *separator, argstr);
return p;
}
@@ -2069,23 +1859,25 @@ nios2_parse_args (nios2_insn_infoS *insn, char *argstr,
while (p != NULL && !terminate && i < NIOS2_MAX_INSN_TOKENS)
{
- parsed_args[i] = nios2_consume_arg (insn, p, parsestr);
+ parsed_args[i] = nios2_consume_arg (p, parsestr);
++parsestr;
- if (*parsestr != '\0')
+ while (*parsestr == '(' || *parsestr == ')' || *parsestr == ',')
{
+ char *context = p;
p = nios2_consume_separator (p, parsestr);
+ /* Check for missing separators. */
+ if (!p && !(insn->insn_nios2_opcode->pinfo & NIOS2_INSN_OPTARG))
+ {
+ as_bad (_("expecting %c near %s"), *parsestr, context);
+ break;
+ }
++parsestr;
}
- else
+
+ if (*parsestr == '\0')
{
/* Check that the argument string has no trailing arguments. */
- /* If we've got a %lo etc relocation, we've zapped the parens with
- spaces. */
- if (nios2_special_relocation_p (p))
- end = strpbrk (p, ",");
- else
- end = strpbrk (p, " ,");
-
+ end = strpbrk (p, ",");
if (end != NULL)
as_bad (_("too many arguments"));
}
@@ -2096,13 +1888,6 @@ nios2_parse_args (nios2_insn_infoS *insn, char *argstr,
}
parsed_args[i] = NULL;
-
- /* The argument to break and trap instructions is optional; complain
- for other cases of missing arguments. */
- if (*parsestr != '\0'
- && insn->insn_nios2_opcode->match != OP_MATCH_BREAK
- && insn->insn_nios2_opcode->match != OP_MATCH_TRAP)
- as_bad (_("missing argument"));
}
@@ -2310,17 +2095,18 @@ static void
output_insn (nios2_insn_infoS *insn)
{
char *f;
- nios2_insn_relocS *reloc;
-
- f = frag_more (4);
+ nios2_insn_relocS *reloc;
+ f = frag_more (insn->insn_nios2_opcode->size);
/* This allocates enough space for the instruction
and puts it in the current frag. */
- md_number_to_chars (f, insn->insn_code, 4);
+ md_number_to_chars (f, insn->insn_code, insn->insn_nios2_opcode->size);
/* Emit debug info. */
- dwarf2_emit_insn (4);
+ dwarf2_emit_insn (insn->insn_nios2_opcode->size);
/* Create any fixups to be acted on later. */
+
for (reloc = insn->insn_reloc; reloc != NULL; reloc = reloc->reloc_next)
- fix_new_exp (frag_now, f - frag_now->fr_literal, 4,
+ fix_new_exp (frag_now, f - frag_now->fr_literal,
+ insn->insn_nios2_opcode->size,
&reloc->reloc_expression, reloc->reloc_pcrel,
reloc->reloc_type);
}
@@ -2346,10 +2132,10 @@ output_ubranch (nios2_insn_infoS *insn)
to accommodate the largest possible instruction sequence
this may generate. */
f = frag_var (rs_machine_dependent,
- UBRANCH_MAX_SIZE, 4, UBRANCH_SUBTYPE (0),
- symp, offset, NULL);
+ UBRANCH_MAX_SIZE, insn->insn_nios2_opcode->size,
+ UBRANCH_SUBTYPE (0), symp, offset, NULL);
- md_number_to_chars (f, insn->insn_code, 4);
+ md_number_to_chars (f, insn->insn_code, insn->insn_nios2_opcode->size);
/* We leave fixup generation to md_convert_frag. */
}
@@ -2376,10 +2162,10 @@ output_cbranch (nios2_insn_infoS *insn)
to accommodate the largest possible instruction sequence
this may generate. */
f = frag_var (rs_machine_dependent,
- CBRANCH_MAX_SIZE, 4, CBRANCH_SUBTYPE (0),
- symp, offset, NULL);
+ CBRANCH_MAX_SIZE, insn->insn_nios2_opcode->size,
+ CBRANCH_SUBTYPE (0), symp, offset, NULL);
- md_number_to_chars (f, insn->insn_code, 4);
+ md_number_to_chars (f, insn->insn_code, insn->insn_nios2_opcode->size);
/* We leave fixup generation to md_convert_frag. */
}
@@ -2399,15 +2185,21 @@ output_call (nios2_insn_infoS *insn)
char *f = frag_more (12);
nios2_insn_relocS *reloc = insn->insn_reloc;
- md_number_to_chars (f, OP_MATCH_ORHI | 0x00400000, 4);
+ md_number_to_chars (f,
+ (MATCH_R1_ORHI | SET_IW_I_B (AT_REGNUM)
+ | SET_IW_I_A (0)),
+ 4);
dwarf2_emit_insn (4);
fix_new_exp (frag_now, f - frag_now->fr_literal, 4,
&reloc->reloc_expression, 0, BFD_RELOC_NIOS2_HI16);
- md_number_to_chars (f + 4, OP_MATCH_ORI | 0x08400000, 4);
+ md_number_to_chars (f + 4,
+ (MATCH_R1_ORI | SET_IW_I_B (AT_REGNUM)
+ | SET_IW_I_A (AT_REGNUM)),
+ 4);
dwarf2_emit_insn (4);
fix_new_exp (frag_now, f - frag_now->fr_literal + 4, 4,
&reloc->reloc_expression, 0, BFD_RELOC_NIOS2_LO16);
- md_number_to_chars (f + 8, OP_MATCH_CALLR | 0x08000000, 4);
+ md_number_to_chars (f + 8, MATCH_R1_CALLR | SET_IW_R_A (AT_REGNUM), 4);
dwarf2_emit_insn (4);
}
@@ -2419,14 +2211,18 @@ output_addi (nios2_insn_infoS *insn)
if (can_evaluate_expr (insn))
{
int expr_val = get_expr_value (insn);
- if (GET_INSN_FIELD (RRS, insn->insn_code) == 0
+ unsigned int rega = GET_IW_I_A (insn->insn_code);
+ unsigned int regb = GET_IW_I_B (insn->insn_code);
+
+ if (rega == 0
&& (expr_val & 0xffff) == 0
&& expr_val != 0)
{
/* We really want a movhi (orhi) here. */
- insn->insn_code = (insn->insn_code & ~OP_MATCH_ADDI) | OP_MATCH_ORHI;
- insn->insn_reloc->reloc_expression.X_add_number =
- (insn->insn_reloc->reloc_expression.X_add_number >> 16) & 0xffff;
+ insn->insn_code
+ = MATCH_R1_ORHI | SET_IW_I_A (rega) | SET_IW_I_B (regb);
+ insn->insn_reloc->reloc_expression.X_add_number
+ = (expr_val >> 16) & 0xffff;
insn->insn_reloc->reloc_type = BFD_RELOC_NIOS2_U16;
}
}
@@ -2443,10 +2239,14 @@ output_andi (nios2_insn_infoS *insn)
int expr_val = get_expr_value (insn);
if (expr_val != 0 && (expr_val & 0xffff) == 0)
{
- /* We really want a movhi (orhi) here. */
- insn->insn_code = (insn->insn_code & ~OP_MATCH_ANDI) | OP_MATCH_ANDHI;
- insn->insn_reloc->reloc_expression.X_add_number =
- (insn->insn_reloc->reloc_expression.X_add_number >> 16) & 0xffff;
+ unsigned int rega = GET_IW_I_A (insn->insn_code);
+ unsigned int regb = GET_IW_I_B (insn->insn_code);
+
+ /* We really want an andhi here. */
+ insn->insn_code
+ = MATCH_R1_ANDHI | SET_IW_I_A (rega) | SET_IW_I_B (regb);
+ insn->insn_reloc->reloc_expression.X_add_number
+ = (expr_val >> 16) & 0xffff;
insn->insn_reloc->reloc_type = BFD_RELOC_NIOS2_U16;
}
}
@@ -2463,10 +2263,14 @@ output_ori (nios2_insn_infoS *insn)
int expr_val = get_expr_value (insn);
if (expr_val != 0 && (expr_val & 0xffff) == 0)
{
+ unsigned int rega = GET_IW_I_A (insn->insn_code);
+ unsigned int regb = GET_IW_I_B (insn->insn_code);
+
/* We really want a movhi (orhi) here. */
- insn->insn_code = (insn->insn_code & ~OP_MATCH_ORI) | OP_MATCH_ORHI;
- insn->insn_reloc->reloc_expression.X_add_number =
- (insn->insn_reloc->reloc_expression.X_add_number >> 16) & 0xffff;
+ insn->insn_code
+ = MATCH_R1_ORHI | SET_IW_I_A (rega) | SET_IW_I_B (regb);
+ insn->insn_reloc->reloc_expression.X_add_number
+ = (expr_val >> 16) & 0xffff;
insn->insn_reloc->reloc_type = BFD_RELOC_NIOS2_U16;
}
}
@@ -2483,10 +2287,14 @@ output_xori (nios2_insn_infoS *insn)
int expr_val = get_expr_value (insn);
if (expr_val != 0 && (expr_val & 0xffff) == 0)
{
- /* We really want a movhi (orhi) here. */
- insn->insn_code = (insn->insn_code & ~OP_MATCH_XORI) | OP_MATCH_XORHI;
- insn->insn_reloc->reloc_expression.X_add_number =
- (insn->insn_reloc->reloc_expression.X_add_number >> 16) & 0xffff;
+ unsigned int rega = GET_IW_I_A (insn->insn_code);
+ unsigned int regb = GET_IW_I_B (insn->insn_code);
+
+ /* We really want an xorhi here. */
+ insn->insn_code
+ = MATCH_R1_XORHI | SET_IW_I_A (rega) | SET_IW_I_B (regb);
+ insn->insn_reloc->reloc_expression.X_add_number
+ = (expr_val >> 16) & 0xffff;
insn->insn_reloc->reloc_type = BFD_RELOC_NIOS2_U16;
}
}
@@ -2504,22 +2312,22 @@ output_movia (nios2_insn_infoS *insn)
and puts it in the current frag. */
char *f = frag_more (8);
nios2_insn_relocS *reloc = insn->insn_reloc;
- unsigned long reg_index = GET_INSN_FIELD (IRT, insn->insn_code);
+ unsigned long reg_index = GET_IW_I_B (insn->insn_code);
/* If the reloc is NULL, there was an error assembling the movia. */
if (reloc != NULL)
{
md_number_to_chars (f, insn->insn_code, 4);
dwarf2_emit_insn (4);
- md_number_to_chars (f + 4,
- (OP_MATCH_ADDI | (reg_index << OP_SH_IRT)
- | (reg_index << OP_SH_IRS)),
- 4);
- dwarf2_emit_insn (4);
fix_new (frag_now, f - frag_now->fr_literal, 4,
reloc->reloc_expression.X_add_symbol,
reloc->reloc_expression.X_add_number, 0,
BFD_RELOC_NIOS2_HIADJ16);
+ md_number_to_chars (f + 4,
+ (MATCH_R1_ADDI | SET_IW_I_A (reg_index)
+ | SET_IW_I_B (reg_index)),
+ 4);
+ dwarf2_emit_insn (4);
fix_new (frag_now, f + 4 - frag_now->fr_literal, 4,
reloc->reloc_expression.X_add_symbol,
reloc->reloc_expression.X_add_number, 0, BFD_RELOC_NIOS2_LO16);
@@ -2599,10 +2407,9 @@ md_begin (void)
arguments. */
nios2_opcode_hash = hash_new ();
nios2_reg_hash = hash_new ();
- nios2_arg_hash = hash_new ();
nios2_ps_hash = hash_new ();
- for (i = 0; i < NUMOPCODES; ++i)
+ for (i = 0; i < nios2_num_opcodes; ++i)
{
inserted
= hash_insert (nios2_opcode_hash, nios2_opcodes[i].name,
@@ -2631,20 +2438,6 @@ md_begin (void)
}
- for (i = 0; i < nios2_num_arg_info_structs; ++i)
- {
- inserted
- = hash_insert (nios2_arg_hash, nios2_arg_info_structs[i].args,
- (PTR) & nios2_arg_info_structs[i]);
- if (inserted != NULL)
- {
- fprintf (stderr, _("internal error: can't hash `%s': %s\n"),
- nios2_arg_info_structs[i].args, inserted);
- /* Probably a memory allocation problem? Give up now. */
- as_fatal (_("Broken assembler. No assembly attempted."));
- }
- }
-
for (i = 0; i < nios2_num_ps_insn_info_structs; ++i)
{
inserted
@@ -2680,7 +2473,6 @@ md_assemble (char *op_str)
{
char *argstr;
char *op_strdup = NULL;
- nios2_arg_infoS *arg_info;
unsigned long saved_pinfo = 0;
nios2_insn_infoS thisinsn;
nios2_insn_infoS *insn = &thisinsn;
@@ -2707,6 +2499,7 @@ md_assemble (char *op_str)
nios2_ps_insn_infoS *ps_insn = NULL;
/* Set the opcode for the instruction. */
insn->insn_code = insn->insn_nios2_opcode->match;
+ insn->constant_bits = 0;
/* Parse the arguments pointed to by argstr. */
if (nios2_mode == NIOS2_MODE_ASSEMBLE)
@@ -2726,53 +2519,41 @@ md_assemble (char *op_str)
== NIOS2_INSN_MACRO)
ps_insn = nios2_translate_pseudo_insn (insn);
- /* Find the assemble function, and call it. */
- arg_info = nios2_arg_lookup (insn->insn_nios2_opcode->args);
- if (arg_info != NULL)
- {
- arg_info->assemble_args_func (insn);
-
- if (nios2_as_options.relax != relax_none
- && !nios2_as_options.noat
- && insn->insn_nios2_opcode->pinfo & NIOS2_INSN_UBRANCH)
- output_ubranch (insn);
- else if (nios2_as_options.relax != relax_none
- && !nios2_as_options.noat
- && insn->insn_nios2_opcode->pinfo & NIOS2_INSN_CBRANCH)
- output_cbranch (insn);
- else if (nios2_as_options.relax == relax_all
- && !nios2_as_options.noat
- && insn->insn_nios2_opcode->pinfo & NIOS2_INSN_CALL
- && insn->insn_reloc
- && ((insn->insn_reloc->reloc_type
- == BFD_RELOC_NIOS2_CALL26)
- || (insn->insn_reloc->reloc_type
- == BFD_RELOC_NIOS2_CALL26_NOAT)))
- output_call (insn);
- else if (insn->insn_nios2_opcode->pinfo & NIOS2_INSN_ANDI)
- output_andi (insn);
- else if (insn->insn_nios2_opcode->pinfo & NIOS2_INSN_ORI)
- output_ori (insn);
- else if (insn->insn_nios2_opcode->pinfo & NIOS2_INSN_XORI)
- output_xori (insn);
- else if (insn->insn_nios2_opcode->pinfo & NIOS2_INSN_ADDI)
- output_addi (insn);
- else if (saved_pinfo == NIOS2_INSN_MACRO_MOVIA)
- output_movia (insn);
- else
- output_insn (insn);
- if (ps_insn)
- nios2_cleanup_pseudo_insn (insn, ps_insn);
- }
+ /* Assemble the parsed arguments into the instruction word. */
+ nios2_assemble_args (insn);
+
+ /* Handle relaxation and other transformations. */
+ if (nios2_as_options.relax != relax_none
+ && !nios2_as_options.noat
+ && insn->insn_nios2_opcode->pinfo & NIOS2_INSN_UBRANCH)
+ output_ubranch (insn);
+ else if (nios2_as_options.relax != relax_none
+ && !nios2_as_options.noat
+ && insn->insn_nios2_opcode->pinfo & NIOS2_INSN_CBRANCH)
+ output_cbranch (insn);
+ else if (nios2_as_options.relax == relax_all
+ && !nios2_as_options.noat
+ && insn->insn_nios2_opcode->pinfo & NIOS2_INSN_CALL
+ && insn->insn_reloc
+ && ((insn->insn_reloc->reloc_type
+ == BFD_RELOC_NIOS2_CALL26)
+ || (insn->insn_reloc->reloc_type
+ == BFD_RELOC_NIOS2_CALL26_NOAT)))
+ output_call (insn);
+ else if (insn->insn_nios2_opcode->pinfo & NIOS2_INSN_ANDI)
+ output_andi (insn);
+ else if (insn->insn_nios2_opcode->pinfo & NIOS2_INSN_ORI)
+ output_ori (insn);
+ else if (insn->insn_nios2_opcode->pinfo & NIOS2_INSN_XORI)
+ output_xori (insn);
+ else if (insn->insn_nios2_opcode->pinfo & NIOS2_INSN_ADDI)
+ output_addi (insn);
+ else if (saved_pinfo == NIOS2_INSN_MACRO_MOVIA)
+ output_movia (insn);
else
- {
- /* The assembler is broken. */
- fprintf (stderr,
- _("internal error: %s is not a valid argument syntax\n"),
- insn->insn_nios2_opcode->args);
- /* Probably a memory allocation problem. Give up now. */
- as_fatal (_("Broken assembler. No assembly attempted."));
- }
+ output_insn (insn);
+ if (ps_insn)
+ nios2_cleanup_pseudo_insn (insn, ps_insn);
}
else
/* Unrecognised instruction - error. */
diff --git a/binutils-2.25/gas/config/tc-s390.c b/binutils-2.25/gas/config/tc-s390.c
index 59f6ab6..60a7dac 100644
--- a/binutils-2.25/gas/config/tc-s390.c
+++ b/binutils-2.25/gas/config/tc-s390.c
@@ -489,7 +489,7 @@ md_show_usage (FILE *stream)
static void
s390_setup_opcodes (void)
{
- register const struct s390_opcode *op;
+ const struct s390_opcode *op;
const struct s390_opcode *op_end;
bfd_boolean dup_insn = FALSE;
const char *retval;
@@ -536,7 +536,7 @@ s390_setup_opcodes (void)
void
md_begin (void)
{
- register const struct s390_opcode *op;
+ const struct s390_opcode *op;
const struct s390_opcode *op_end;
const char *retval;
diff --git a/binutils-2.25/gas/config/tc-sh.c b/binutils-2.25/gas/config/tc-sh.c
index 6e9ae92..888a51f 100644
--- a/binutils-2.25/gas/config/tc-sh.c
+++ b/binutils-2.25/gas/config/tc-sh.c
@@ -811,7 +811,7 @@ sh_cons_fix_new (fragS *frag, int off, int size, expressionS *exp,
/* Clobbers input_line_pointer, checks end-of-line. */
/* NBYTES 1=.byte, 2=.word, 4=.long */
static void
-sh_elf_cons (register int nbytes)
+sh_elf_cons (int nbytes)
{
expressionS exp;
diff --git a/binutils-2.25/gas/config/tc-sparc.c b/binutils-2.25/gas/config/tc-sparc.c
index 758fcc8..e3fd64a 100644
--- a/binutils-2.25/gas/config/tc-sparc.c
+++ b/binutils-2.25/gas/config/tc-sparc.c
@@ -863,9 +863,9 @@ cmp_reg_entry (const void *parg, const void *qarg)
void
md_begin (void)
{
- register const char *retval = NULL;
+ const char *retval = NULL;
int lose = 0;
- register unsigned int i = 0;
+ unsigned int i = 0;
/* We don't get a chance to initialize anything before md_parse_option
is called, and it may not be called, so handle default initialization
diff --git a/binutils-2.25/gas/config/tc-tic30.c b/binutils-2.25/gas/config/tc-tic30.c
index dbcbf3c..436aaeb 100644
--- a/binutils-2.25/gas/config/tc-tic30.c
+++ b/binutils-2.25/gas/config/tc-tic30.c
@@ -1116,7 +1116,7 @@ md_estimate_size_before_relax (fragS *fragP ATTRIBUTE_UNUSED,
void
md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
segT sec ATTRIBUTE_UNUSED,
- register fragS *fragP ATTRIBUTE_UNUSED)
+ fragS *fragP ATTRIBUTE_UNUSED)
{
debug ("In md_convert_frag()\n");
}
diff --git a/binutils-2.25/gas/config/tc-tic4x.c b/binutils-2.25/gas/config/tc-tic4x.c
index dc82168..12d8ec9 100644
--- a/binutils-2.25/gas/config/tc-tic4x.c
+++ b/binutils-2.25/gas/config/tc-tic4x.c
@@ -831,7 +831,7 @@ tic4x_globl (int ignore ATTRIBUTE_UNUSED)
static void
tic4x_cons (int bytes)
{
- register unsigned int c;
+ unsigned int c;
do
{
SKIP_WHITESPACE ();
@@ -875,7 +875,7 @@ static void
tic4x_stringer (int append_zero)
{
int bytes;
- register unsigned int c;
+ unsigned int c;
bytes = 0;
do
diff --git a/binutils-2.25/gas/config/tc-z80.c b/binutils-2.25/gas/config/tc-z80.c
index 54fa322..a602dc7 100644
--- a/binutils-2.25/gas/config/tc-z80.c
+++ b/binutils-2.25/gas/config/tc-z80.c
@@ -557,6 +557,8 @@ parse_exp_not_indexed (const char *s, expressionS *op)
case O_illegal:
error (_("bad expression syntax"));
break;
+ default:
+ break;
}
return input_line_pointer;
}
@@ -604,6 +606,8 @@ parse_exp (const char *s, expressionS *op)
op->X_op = O_md1;
}
break;
+ default:
+ break;
}
return res;
}
diff --git a/binutils-2.25/gas/configure b/binutils-2.25/gas/configure
index c8b6e87..32cfbeb 100755
--- a/binutils-2.25/gas/configure
+++ b/binutils-2.25/gas/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.64 for gas 2.24.90.
+# Generated by GNU Autoconf 2.64 for gas 2.25.51.
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
@@ -556,8 +556,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='gas'
PACKAGE_TARNAME='gas'
-PACKAGE_VERSION='2.24.90'
-PACKAGE_STRING='gas 2.24.90'
+PACKAGE_VERSION='2.25.51'
+PACKAGE_STRING='gas 2.25.51'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1320,7 +1320,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures gas 2.24.90 to adapt to many kinds of systems.
+\`configure' configures gas 2.25.51 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1391,7 +1391,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of gas 2.24.90:";;
+ short | recursive ) echo "Configuration of gas 2.25.51:";;
esac
cat <<\_ACEOF
@@ -1505,7 +1505,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-gas configure 2.24.90
+gas configure 2.25.51
generated by GNU Autoconf 2.64
Copyright (C) 2009 Free Software Foundation, Inc.
@@ -1915,7 +1915,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by gas $as_me 2.24.90, which was
+It was created by gas $as_me 2.25.51, which was
generated by GNU Autoconf 2.64. Invocation command line was
$ $0 $@
@@ -3723,7 +3723,7 @@ fi
# Define the identity of the package.
PACKAGE='gas'
- VERSION='2.24.90'
+ VERSION='2.25.51'
cat >>confdefs.h <<_ACEOF
@@ -15064,7 +15064,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by gas $as_me 2.24.90, which was
+This file was extended by gas $as_me 2.25.51, which was
generated by GNU Autoconf 2.64. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -15128,7 +15128,7 @@ Report bugs to the package provider."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-gas config.status 2.24.90
+gas config.status 2.25.51
configured by $0, generated by GNU Autoconf 2.64,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff --git a/binutils-2.25/gas/doc/Makefile.am b/binutils-2.25/gas/doc/Makefile.am
index c2ddc02..1976f88 100644
--- a/binutils-2.25/gas/doc/Makefile.am
+++ b/binutils-2.25/gas/doc/Makefile.am
@@ -28,7 +28,7 @@ MANCONF = -Dman
TEXI2POD = perl $(BASEDIR)/etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
POD2MAN = pod2man --center="GNU Development Tools" \
- --release="binutils-$(VERSION)" --section=1
+ --release="binutils-$(VERSION)" --section=1 --date=" "
man_MANS = as.1
diff --git a/binutils-2.25/gas/doc/Makefile.in b/binutils-2.25/gas/doc/Makefile.in
index 2db5121..267b428 100644
--- a/binutils-2.25/gas/doc/Makefile.in
+++ b/binutils-2.25/gas/doc/Makefile.in
@@ -16,7 +16,7 @@
@SET_MAKE@
#
-# Copyright (C) 2012-2014 Free Software Foundation, Inc.
+# Copyright (C) 2012-2015 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -276,7 +276,7 @@ CONFIG = all
MANCONF = -Dman
TEXI2POD = perl $(BASEDIR)/etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
POD2MAN = pod2man --center="GNU Development Tools" \
- --release="binutils-$(VERSION)" --section=1
+ --release="binutils-$(VERSION)" --section=1 --date=" "
man_MANS = as.1
info_TEXINFOS = as.texinfo
diff --git a/binutils-2.25/gas/doc/as.texinfo b/binutils-2.25/gas/doc/as.texinfo
index 55e4f54..e5949fa 100644
--- a/binutils-2.25/gas/doc/as.texinfo
+++ b/binutils-2.25/gas/doc/as.texinfo
@@ -5234,6 +5234,8 @@ following section of code if the two strings are not the same.
@cindex @code{incbin} directive
@cindex binary files, including
+The @code{incbin} directive can be used with @option{--allow-incbin}.
+
The @code{incbin} directive includes @var{file} verbatim at the current
location. You can control the search paths used with the @samp{-I} command-line
option (@pxref{Invoking,,Command-Line Options}). Quotation marks are required
diff --git a/binutils-2.25/gas/doc/c-aarch64.texi b/binutils-2.25/gas/doc/c-aarch64.texi
index 8fbae06..f3d4e41 100644
--- a/binutils-2.25/gas/doc/c-aarch64.texi
+++ b/binutils-2.25/gas/doc/c-aarch64.texi
@@ -57,9 +57,9 @@ message if an attempt is made to assemble an instruction which will not execute
on the target processor. The following processor names are recognized:
@code{cortex-a53},
@code{cortex-a57},
-@code{xgene1},
+@code{thunderx},
and
-@code{xgene2}.
+@code{xgene-1}.
The special name @code{all} may be used to allow the assembler to accept
instructions valid for any supported processor, including all optional
extensions.
diff --git a/binutils-2.25/gas/doc/c-mips.texi b/binutils-2.25/gas/doc/c-mips.texi
index 7d19169..53e28f2 100644
--- a/binutils-2.25/gas/doc/c-mips.texi
+++ b/binutils-2.25/gas/doc/c-mips.texi
@@ -388,6 +388,7 @@ loongson3a,
octeon,
octeon+,
octeon2,
+octeon3,
xlr,
xlp
@end quotation
diff --git a/binutils-2.25/gas/dwarf2dbg.c b/binutils-2.25/gas/dwarf2dbg.c
index 3067b8c..f20c44a 100644
--- a/binutils-2.25/gas/dwarf2dbg.c
+++ b/binutils-2.25/gas/dwarf2dbg.c
@@ -44,6 +44,9 @@
#include "dwarf2dbg.h"
#include <filenames.h>
+#include <stdint.h>
+
+#include "hash.h"
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
/* We need to decide which character to use as a directory separator.
@@ -101,6 +104,10 @@
#ifndef DWARF2_LINE_VERSION
#define DWARF2_LINE_VERSION 2
#endif
+/* If we see .lloc directives, generate an experimental version 6. */
+#ifndef DWARF2_LINE_EXPERIMENTAL_VERSION
+#define DWARF2_LINE_EXPERIMENTAL_VERSION 0xf006
+#endif
#include "subsegs.h"
@@ -126,6 +133,11 @@
"standard_opcode_lengths" table that is emitted below in
out_debug_line(). */
#define DWARF2_LINE_OPCODE_BASE 13
+#define DWARF5_EXPERIMENTAL_LINE_OPCODE_BASE 16
+
+static int opcode_base;
+static int line_base;
+static unsigned int line_range;
#ifndef DWARF2_LINE_BASE
/* Minimum line offset in a special line info. opcode. This value
@@ -138,22 +150,30 @@
# define DWARF2_LINE_RANGE 14
#endif
+/* For two-level line tables, these values work a bit better. */
+#define DWARF5_EXPERIMENTAL_LINE_BASE -3
+#define DWARF5_EXPERIMENTAL_LINE_RANGE 10
+
#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 1
#endif
+#ifndef DWARF2_LINE_MAX_OPS_PER_INSN
+# define DWARF2_LINE_MAX_OPS_PER_INSN 1
+#endif
+
/* Flag that indicates the initial value of the is_stmt_start flag. */
#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)
+ (((op) - opcode_base) % line_range + line_base)
/* Given a special op, return the address skip amount (in units of
DWARF2_LINE_MIN_INSN_LENGTH. */
-#define SPECIAL_ADDR(op) (((op) - DWARF2_LINE_OPCODE_BASE)/DWARF2_LINE_RANGE)
+#define SPECIAL_ADDR(op) (((op) - opcode_base) / line_range)
/* The maximum address skip amount that can be encoded with a special op. */
#define MAX_SPECIAL_ADDR_DELTA SPECIAL_ADDR(255)
@@ -203,6 +223,44 @@ static char **dirs;
static unsigned int dirs_in_use;
static unsigned int dirs_allocated;
+/* Experimental DWARF-5 Extension: Table of subprograms. */
+struct subprog_entry {
+ const char *subpname;
+ unsigned int filenum;
+ unsigned int line;
+};
+
+static struct subprog_entry *subprogs;
+static unsigned int subprogs_in_use;
+static unsigned int subprogs_allocated;
+
+/* Experimental DWARF-5 Extension: Logicals table. */
+struct logicals_entry {
+ segT seg;
+ symbolS *label;
+ /* A logical row doesn't use every field in this struct, but using it
+ here makes the code for writing the line number program simpler. */
+ struct dwarf2_line_info loc;
+ unsigned int context;
+ unsigned int subprog;
+};
+
+static struct logicals_entry *logicals;
+static unsigned int logicals_in_use;
+static unsigned int logicals_allocated = 0;
+static unsigned int logicals_with_labels = 0;
+
+/* DWARF-5: .debug_line_str string table. */
+struct string_table {
+ struct hash_control *hashtab;
+ const char **strings;
+ unsigned int strings_in_use;
+ unsigned int strings_allocated;
+ offsetT next_offset;
+};
+
+static struct string_table debug_line_str_table;
+
/* TRUE when we've seen a .loc directive recently. Used to avoid
doing work when there's nothing to do. */
bfd_boolean dwarf2_loc_directive_seen;
@@ -213,9 +271,9 @@ bfd_boolean dwarf2_loc_mark_labels;
/* Current location as indicated by the most recent .loc directive. */
static struct dwarf2_line_info current = {
- 1, 1, 0, 0,
- DWARF2_LINE_DEFAULT_IS_STMT ? DWARF2_FLAG_IS_STMT : 0,
- 0
+ 1, 1, 0, 0, /* filenum, line, column, isa */
+ DWARF2_LINE_DEFAULT_IS_STMT ? DWARF2_FLAG_IS_STMT : 0, /* flags */
+ 0, 0 /* discriminator, logical */
};
/* The size of an address on the target. */
@@ -338,6 +396,15 @@ dwarf2_gen_line_info (addressT ofs, struct dwarf2_line_info *loc)
else
sym = symbol_temp_new (now_seg, ofs, frag_now);
dwarf2_gen_line_info_1 (sym, loc);
+
+ /* Record the current symbol with all logical rows created since
+ the last emitted instruction. */
+ while (logicals_with_labels < logicals_in_use)
+ {
+ logicals[logicals_with_labels].label = sym;
+ logicals[logicals_with_labels].seg = now_seg;
+ logicals_with_labels++;
+ }
}
/* Returns the current source information. If .file directives have
@@ -357,6 +424,7 @@ dwarf2_where (struct dwarf2_line_info *line)
line->flags = DWARF2_FLAG_IS_STMT;
line->isa = current.isa;
line->discriminator = current.discriminator;
+ line->logical = 0;
}
else
*line = current;
@@ -560,6 +628,68 @@ get_filenum (const char *filename, unsigned int num)
return i;
}
+/* Make a new entry in the subprograms table. */
+
+static void
+make_subprog_entry (unsigned int num, char *subpname, int filenum, int line)
+{
+ if (subprogs_allocated == 0)
+ {
+ subprogs_allocated = 4;
+ subprogs = (struct subprog_entry *)
+ xcalloc (subprogs_allocated, sizeof (struct subprog_entry));
+ }
+ if (num > subprogs_allocated)
+ {
+ unsigned int old = subprogs_allocated;
+
+ subprogs_allocated *= 2;
+ if (num > subprogs_allocated)
+ subprogs_allocated = num;
+ subprogs = (struct subprog_entry *)
+ xrealloc (subprogs,
+ subprogs_allocated * sizeof (struct subprog_entry));
+ memset (subprogs + old, 0,
+ (subprogs_allocated - old) * sizeof (struct subprog_entry));
+ }
+ if (subprogs_in_use < num)
+ subprogs_in_use = num;
+ subprogs[num - 1].subpname = xstrdup (subpname);
+ subprogs[num - 1].filenum = filenum;
+ subprogs[num - 1].line = line;
+}
+
+/* Make a new entry in the logicals table. */
+
+static void
+make_logical (unsigned int logical, int context, int subprog)
+{
+ if (logicals_allocated == 0)
+ {
+ logicals_allocated = 4;
+ logicals = (struct logicals_entry *)
+ xcalloc (logicals_allocated, sizeof (struct logicals_entry));
+ }
+ if (logical > logicals_allocated)
+ {
+ unsigned int old = logicals_allocated;
+
+ logicals_allocated *= 2;
+ if (logical > logicals_allocated)
+ logicals_allocated = logical;
+ logicals = (struct logicals_entry *)
+ xrealloc (logicals,
+ logicals_allocated * sizeof (struct logicals_entry));
+ memset (logicals + old, 0,
+ (logicals_allocated - old) * sizeof (struct logicals_entry));
+ }
+ logicals[logical - 1].loc = current;
+ logicals[logical - 1].context = context;
+ logicals[logical - 1].subprog = subprog;
+ if (logical > logicals_in_use)
+ logicals_in_use = logical;
+}
+
/* Handle two forms of .file directive:
- Pass .file "source.c" to s_app_file
- Handle .file 1 "source.c" by adding an entry to the DWARF-2 file table
@@ -608,34 +738,130 @@ dwarf2_directive_file (int dummy ATTRIBUTE_UNUSED)
return filename;
}
+/* Experimental DWARF-5 extension:
+ Implements the .subprog SUBPNO ["SUBPROG" [FILENO LINENO]] directive.
+ FILENO is the file number, LINENO the line number and the
+ (optional) COLUMN the column of the source code that the following
+ instruction corresponds to. FILENO can be 0 to indicate that the
+ filename specified by the textually most recent .file directive
+ should be used. */
void
-dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
+dwarf2_directive_subprog (int dummy ATTRIBUTE_UNUSED)
{
- offsetT filenum, line;
+ offsetT num, filenum, line;
+ char *subpname;
+ int subpname_len;
- /* If we see two .loc directives in a row, force the first one to be
- output now. */
- if (dwarf2_loc_directive_seen)
- dwarf2_emit_insn (0);
+ num = get_absolute_expression ();
+ subpname = demand_copy_C_string (&subpname_len);
+ if (subpname == NULL)
+ return;
+ SKIP_WHITESPACE ();
filenum = get_absolute_expression ();
SKIP_WHITESPACE ();
line = get_absolute_expression ();
+ demand_empty_rest_of_line ();
- if (filenum < 1)
+ if (num < 1)
{
- as_bad (_("file number less than one"));
+ as_bad (_("subprogram number less than one"));
return;
}
- if (filenum >= (int) files_in_use || files[filenum].filename == 0)
+
+ /* A .subprog directive implies compiler generated debug information is
+ being supplied. Turn off gas generated debug info. */
+ debug_type = DEBUG_NONE;
+
+ if (num < (int) subprogs_in_use && subprogs[num].subpname != NULL)
{
- as_bad (_("unassigned file number %ld"), (long) filenum);
+ as_bad (_("subprogram number %ld already allocated"), (long) num);
return;
}
+ make_subprog_entry (num, subpname, filenum, line);
+}
+
+void
+dwarf2_directive_loc (int is_lloc)
+{
+ offsetT filenum, line;
+ offsetT logical = 0;
+ offsetT context = 0;
+ offsetT subprog = 0;
+ bfd_boolean is_new_logical = FALSE;
+ bfd_boolean is_actual = FALSE;
+ static bfd_boolean saw_loc = FALSE;
+ static bfd_boolean saw_lloc = FALSE;
+ static bfd_boolean saw_both = FALSE;
+
+ if ((is_lloc && saw_loc) || (!is_lloc && saw_lloc))
+ {
+ if (!saw_both)
+ as_bad (_(".loc and .lloc cannot both be used"));
+ saw_both = TRUE;
+ return;
+ }
+
+ if (is_lloc)
+ {
+ saw_lloc = TRUE;
+ logical = get_absolute_expression ();
+ SKIP_WHITESPACE ();
+
+ if (ISDIGIT (*input_line_pointer))
+ is_new_logical = TRUE;
+ else
+ is_actual = TRUE;
+
+ if (logical < 1)
+ {
+ as_bad (_("logical row less than one"));
+ return;
+ }
+ if (is_actual &&
+ ((unsigned int) logical > logicals_in_use
+ || logicals[logical - 1].loc.line == 0))
+ {
+ as_bad (_("unassigned logical row %ld"), (long) logical);
+ return;
+ }
+ }
+ else
+ saw_loc = TRUE;
+
+ /* If we see two .loc directives in a row, force the first one to be
+ output now. */
+ if (dwarf2_loc_directive_seen)
+ dwarf2_emit_insn (0);
+
+ if (is_lloc && !is_new_logical)
+ {
+ filenum = logicals[logical - 1].loc.filenum;
+ line = logicals[logical - 1].loc.line;
+ }
+ else
+ {
+ filenum = get_absolute_expression ();
+ SKIP_WHITESPACE ();
+ line = get_absolute_expression ();
+
+ 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.discriminator = 0;
+ current.logical = logical;
#ifndef NO_LISTING
if (listing)
@@ -678,17 +904,17 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
current.flags |= DWARF2_FLAG_BASIC_BLOCK;
*input_line_pointer = c;
}
- else if (strcmp (p, "prologue_end") == 0)
+ else if (!is_actual && strcmp (p, "prologue_end") == 0)
{
current.flags |= DWARF2_FLAG_PROLOGUE_END;
*input_line_pointer = c;
}
- else if (strcmp (p, "epilogue_begin") == 0)
+ else if (!is_actual && strcmp (p, "epilogue_begin") == 0)
{
current.flags |= DWARF2_FLAG_EPILOGUE_BEGIN;
*input_line_pointer = c;
}
- else if (strcmp (p, "is_stmt") == 0)
+ else if (!is_actual && strcmp (p, "is_stmt") == 0)
{
*input_line_pointer = c;
value = get_absolute_expression ();
@@ -714,7 +940,7 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
return;
}
}
- else if (strcmp (p, "discriminator") == 0)
+ else if (!is_actual && strcmp (p, "discriminator") == 0)
{
*input_line_pointer = c;
value = get_absolute_expression ();
@@ -726,6 +952,30 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
return;
}
}
+ else if (!is_actual && strcmp (p, "context") == 0)
+ {
+ *input_line_pointer = c;
+ value = get_absolute_expression ();
+ if (value >= 0)
+ context = value;
+ else
+ {
+ as_bad (_("context less than zero"));
+ return;
+ }
+ }
+ else if (!is_actual && strcmp (p, "subprog") == 0)
+ {
+ *input_line_pointer = c;
+ value = get_absolute_expression ();
+ if (value >= 0)
+ subprog = value;
+ else
+ {
+ as_bad (_("subprog number less than zero"));
+ return;
+ }
+ }
else
{
as_bad (_("unknown .loc sub-directive `%s'"), p);
@@ -739,6 +989,9 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
demand_empty_rest_of_line ();
dwarf2_loc_directive_seen = TRUE;
debug_type = DEBUG_NONE;
+
+ if (is_new_logical)
+ make_logical (logical, context, subprog);
}
void
@@ -869,6 +1122,15 @@ out_set_addr (symbolS *sym)
emit_expr (&exp, sizeof_address);
}
+/* Set the address from a logicals table entry. */
+
+static void
+out_set_addr_from_logical (int logical_delta)
+{
+ out_opcode (DW_LNS_set_address_from_logical);
+ out_leb128 (logical_delta);
+}
+
static void scale_addr_delta (addressT *);
static void
@@ -907,7 +1169,7 @@ size_inc_line_addr (int line_delta, addressT addr_delta)
to emit the matrix entry. */
if (line_delta == INT_MAX)
{
- if (addr_delta == MAX_SPECIAL_ADDR_DELTA)
+ if (addr_delta == (unsigned int) MAX_SPECIAL_ADDR_DELTA)
len = 1;
else
len = 1 + sizeof_leb128 (addr_delta, 0);
@@ -915,30 +1177,30 @@ size_inc_line_addr (int line_delta, addressT addr_delta)
}
/* Bias the line delta by the base. */
- tmp = line_delta - DWARF2_LINE_BASE;
+ tmp = line_delta - 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)
+ if (tmp >= line_range)
{
len = 1 + sizeof_leb128 (line_delta, 1);
line_delta = 0;
- tmp = 0 - DWARF2_LINE_BASE;
+ tmp = 0 - line_base;
}
/* Bias the opcode by the special opcode base. */
- tmp += DWARF2_LINE_OPCODE_BASE;
+ tmp += opcode_base;
/* Avoid overflow when addr_delta is large. */
- if (addr_delta < 256 + MAX_SPECIAL_ADDR_DELTA)
+ if (addr_delta < (unsigned int) (256 + MAX_SPECIAL_ADDR_DELTA))
{
/* Try using a special opcode. */
- opcode = tmp + addr_delta * DWARF2_LINE_RANGE;
+ opcode = tmp + addr_delta * 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;
+ opcode = tmp + (addr_delta - MAX_SPECIAL_ADDR_DELTA) * line_range;
if (opcode <= 255)
return len + 2;
}
@@ -971,7 +1233,7 @@ emit_inc_line_addr (int line_delta, addressT addr_delta, char *p, int len)
to emit the matrix entry. */
if (line_delta == INT_MAX)
{
- if (addr_delta == MAX_SPECIAL_ADDR_DELTA)
+ if (addr_delta == (unsigned int) MAX_SPECIAL_ADDR_DELTA)
*p++ = DW_LNS_const_add_pc;
else
{
@@ -986,17 +1248,17 @@ emit_inc_line_addr (int line_delta, addressT addr_delta, char *p, int len)
}
/* Bias the line delta by the base. */
- tmp = line_delta - DWARF2_LINE_BASE;
+ tmp = line_delta - 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)
+ if (tmp >= line_range)
{
*p++ = DW_LNS_advance_line;
p += output_leb128 (p, line_delta, 1);
line_delta = 0;
- tmp = 0 - DWARF2_LINE_BASE;
+ tmp = 0 - line_base;
need_copy = 1;
}
@@ -1009,13 +1271,13 @@ emit_inc_line_addr (int line_delta, addressT addr_delta, char *p, int len)
}
/* Bias the opcode by the special opcode base. */
- tmp += DWARF2_LINE_OPCODE_BASE;
+ tmp += opcode_base;
/* Avoid overflow when addr_delta is large. */
- if (addr_delta < 256 + MAX_SPECIAL_ADDR_DELTA)
+ if (addr_delta < (unsigned int) (256 + MAX_SPECIAL_ADDR_DELTA))
{
/* Try using a special opcode. */
- opcode = tmp + addr_delta * DWARF2_LINE_RANGE;
+ opcode = tmp + addr_delta * line_range;
if (opcode <= 255)
{
*p++ = opcode;
@@ -1023,7 +1285,7 @@ emit_inc_line_addr (int line_delta, addressT addr_delta, char *p, int len)
}
/* Try using DW_LNS_const_add_pc followed by special op. */
- opcode = tmp + (addr_delta - MAX_SPECIAL_ADDR_DELTA) * DWARF2_LINE_RANGE;
+ opcode = tmp + (addr_delta - MAX_SPECIAL_ADDR_DELTA) * line_range;
if (opcode <= 255)
{
*p++ = DW_LNS_const_add_pc;
@@ -1264,6 +1526,140 @@ dwarf2dbg_convert_frag (fragS *frag)
frag->fr_offset = 0;
}
+/* Generate .debug_line content for the logicals table rows. */
+
+static void
+emit_logicals (void)
+{
+ unsigned logical;
+ unsigned filenum = 1;
+ unsigned line = 1;
+ unsigned column = 0;
+ unsigned discriminator;
+ unsigned flags = DWARF2_LINE_DEFAULT_IS_STMT ? DWARF2_FLAG_IS_STMT : 0;
+ unsigned context = 0;
+ unsigned subprog = 0;
+ segT last_seg = NULL;
+ fragS *last_frag = NULL, *frag;
+ addressT last_frag_ofs = 0, frag_ofs;
+ symbolS *last_lab = NULL, *lab;
+
+ for (logical = 1; logical <= logicals_in_use; ++logical)
+ {
+ int line_delta;
+ int context_delta;
+ struct logicals_entry *e = &logicals[logical - 1];
+
+ discriminator = 0;
+
+ if (context != e->context || subprog != e->subprog)
+ {
+ unsigned int caller = context;
+ unsigned int npop = 0;
+
+ // See if a sequence of DW_LNS_pop_context ops will get
+ // to the state we want.
+ while (caller > 0 && caller <= logicals_in_use)
+ {
+ ++npop;
+ if (logicals[caller - 1].subprog == e->subprog)
+ break;
+ caller = logicals[caller - 1].context;
+ }
+ if (caller > 0 && caller <= logicals_in_use && npop < 10)
+ {
+ while (npop-- > 0)
+ out_opcode (DW_LNS_pop_context);
+ filenum = logicals[caller - 1].loc.filenum;
+ line = logicals[caller - 1].loc.line;
+ column = logicals[caller - 1].loc.column;
+ discriminator = logicals[caller - 1].loc.discriminator;
+ flags = logicals[caller - 1].loc.flags;
+ context = logicals[caller - 1].context;
+ subprog = logicals[caller - 1].subprog;
+ }
+ if (context != e->context && e->context == 0)
+ {
+ context = 0;
+ subprog = e->subprog;
+ out_opcode (DW_LNS_set_subprogram);
+ out_uleb128 (subprog);
+ }
+ else if (context != e->context || subprog != e->subprog)
+ {
+ context_delta = e->context - (logical - 1);
+ context = e->context;
+ subprog = e->subprog;
+ out_opcode (DW_LNS_inlined_call);
+ out_leb128 (context_delta);
+ out_uleb128 (subprog);
+ }
+ }
+
+ if (filenum != e->loc.filenum)
+ {
+ filenum = e->loc.filenum;
+ out_opcode (DW_LNS_set_file);
+ out_uleb128 (filenum);
+ }
+
+ if (column != e->loc.column)
+ {
+ column = e->loc.column;
+ out_opcode (DW_LNS_set_column);
+ out_uleb128 (column);
+ }
+
+ if (e->loc.discriminator != discriminator)
+ {
+ out_opcode (DW_LNS_extended_op);
+ out_leb128 (1 + sizeof_leb128 (e->loc.discriminator, 0));
+ out_opcode (DW_LNE_set_discriminator);
+ out_uleb128 (e->loc.discriminator);
+ }
+
+ if ((e->loc.flags ^ flags) & DWARF2_FLAG_IS_STMT)
+ {
+ flags = e->loc.flags;
+ out_opcode (DW_LNS_negate_stmt);
+ }
+
+ if (e->loc.flags & DWARF2_FLAG_PROLOGUE_END)
+ out_opcode (DW_LNS_set_prologue_end);
+
+ if (e->loc.flags & DWARF2_FLAG_EPILOGUE_BEGIN)
+ out_opcode (DW_LNS_set_epilogue_begin);
+
+ line_delta = e->loc.line - line;
+ if (e->label == NULL)
+ {
+ out_inc_line_addr (line_delta, 0);
+ }
+ else
+ {
+ lab = e->label;
+ frag = symbol_get_frag (lab);
+ frag_ofs = S_GET_VALUE (lab);
+
+ if (last_frag == NULL || e->seg != last_seg)
+ {
+ out_set_addr (lab);
+ out_inc_line_addr (line_delta, 0);
+ }
+ else if (frag == last_frag && ! DWARF2_USE_FIXED_ADVANCE_PC)
+ out_inc_line_addr (line_delta, frag_ofs - last_frag_ofs);
+ else
+ relax_inc_line_addr (line_delta, lab, last_lab);
+
+ line = e->loc.line;
+ last_seg = e->seg;
+ last_lab = lab;
+ last_frag = frag;
+ last_frag_ofs = frag_ofs;
+ }
+ }
+}
+
/* Generate .debug_line content for the chain of line number entries
beginning at E, for segment SEG. */
@@ -1318,27 +1714,30 @@ process_entries (segT seg, struct line_entry *e)
{
int line_delta;
- if (filenum != e->loc.filenum)
- {
- filenum = e->loc.filenum;
- out_opcode (DW_LNS_set_file);
- out_uleb128 (filenum);
- }
+ if (logicals_in_use == 0)
+ {
+ if (filenum != e->loc.filenum)
+ {
+ filenum = e->loc.filenum;
+ out_opcode (DW_LNS_set_file);
+ out_uleb128 (filenum);
+ }
- if (column != e->loc.column)
- {
- column = e->loc.column;
- out_opcode (DW_LNS_set_column);
- out_uleb128 (column);
- }
+ if (column != e->loc.column)
+ {
+ column = e->loc.column;
+ out_opcode (DW_LNS_set_column);
+ out_uleb128 (column);
+ }
- if (e->loc.discriminator != 0)
- {
- out_opcode (DW_LNS_extended_op);
- out_leb128 (1 + sizeof_leb128 (e->loc.discriminator, 0));
- out_opcode (DW_LNE_set_discriminator);
- out_uleb128 (e->loc.discriminator);
- }
+ if (e->loc.discriminator != 0)
+ {
+ out_opcode (DW_LNS_extended_op);
+ out_leb128 (1 + sizeof_leb128 (e->loc.discriminator, 0));
+ out_opcode (DW_LNE_set_discriminator);
+ out_uleb128 (e->loc.discriminator);
+ }
+ }
if (isa != e->loc.isa)
{
@@ -1347,41 +1746,58 @@ process_entries (segT seg, struct line_entry *e)
out_uleb128 (isa);
}
- if ((e->loc.flags ^ flags) & DWARF2_FLAG_IS_STMT)
- {
- flags = e->loc.flags;
- out_opcode (DW_LNS_negate_stmt);
- }
-
if (e->loc.flags & DWARF2_FLAG_BASIC_BLOCK)
out_opcode (DW_LNS_set_basic_block);
- if (e->loc.flags & DWARF2_FLAG_PROLOGUE_END)
- out_opcode (DW_LNS_set_prologue_end);
+ if (logicals_in_use == 0)
+ {
+ if ((e->loc.flags ^ flags) & DWARF2_FLAG_IS_STMT)
+ {
+ flags = e->loc.flags;
+ out_opcode (DW_LNS_negate_stmt);
+ }
- if (e->loc.flags & DWARF2_FLAG_EPILOGUE_BEGIN)
- out_opcode (DW_LNS_set_epilogue_begin);
+ if (e->loc.flags & DWARF2_FLAG_PROLOGUE_END)
+ out_opcode (DW_LNS_set_prologue_end);
+
+ if (e->loc.flags & DWARF2_FLAG_EPILOGUE_BEGIN)
+ out_opcode (DW_LNS_set_epilogue_begin);
+ }
/* Don't try to optimize away redundant entries; gdb wants two
entries for a function where the code starts on the same line as
the {, and there's no way to identify that case here. Trust gcc
to optimize appropriately. */
- line_delta = e->loc.line - line;
+ if (logicals_in_use == 0)
+ line_delta = e->loc.line - line;
+ else
+ line_delta = e->loc.logical - line;
lab = e->label;
frag = symbol_get_frag (lab);
frag_ofs = S_GET_VALUE (lab);
if (last_frag == NULL)
{
- out_set_addr (lab);
- out_inc_line_addr (line_delta, 0);
+ if (logicals_in_use > 0 && logicals[e->loc.logical - 1].label == lab)
+ {
+ out_set_addr_from_logical (line_delta);
+ out_opcode (DW_LNS_copy);
+ }
+ else
+ {
+ out_set_addr (lab);
+ out_inc_line_addr (line_delta, 0);
+ }
}
else if (frag == last_frag && ! DWARF2_USE_FIXED_ADVANCE_PC)
out_inc_line_addr (line_delta, frag_ofs - last_frag_ofs);
else
relax_inc_line_addr (line_delta, lab, last_lab);
- line = e->loc.line;
+ if (logicals_in_use == 0)
+ line = e->loc.line;
+ else
+ line = e->loc.logical;
last_lab = lab;
last_frag = frag;
last_frag_ofs = frag_ofs;
@@ -1456,6 +1872,160 @@ out_file_list (void)
out_byte (0);
}
+/* Add a string to the string table. */
+
+static offsetT
+add_to_string_table (struct string_table *strtab, const char *str)
+{
+ const char *key;
+ offsetT val;
+
+ if (strtab->strings_allocated == 0)
+ {
+ strtab->strings_allocated = 4;
+ strtab->strings = (const char **)
+ xcalloc (strtab->strings_allocated, sizeof(char *));
+ strtab->hashtab = hash_new ();
+ }
+
+ val = (offsetT) (uintptr_t)hash_find (strtab->hashtab, str);
+ if (val != 0)
+ return val;
+
+ if (strtab->strings_in_use >= strtab->strings_allocated)
+ {
+ unsigned int old = strtab->strings_allocated;
+
+ strtab->strings_allocated *= 2;
+ strtab->strings = (const char **)
+ xrealloc (strtab->strings,
+ strtab->strings_allocated * sizeof (char *));
+ memset (strtab->strings + old, 0,
+ (strtab->strings_allocated - old) * sizeof (char *));
+ }
+
+ key = xstrdup (str);
+ val = strtab->next_offset;
+ hash_insert (strtab->hashtab, key, (void *) (uintptr_t)val);
+ strtab->strings[strtab->strings_in_use++] = key;
+ strtab->next_offset += strlen(key) + 1;
+ return val;
+}
+
+/* Output the string table STRTAB to the section STR_SEG.
+ In a debug string table, the first byte is always '\0',
+ and valid indexes begin at 1. */
+
+static void
+out_string_table (segT str_seg, struct string_table *strtab)
+{
+ unsigned int i;
+ size_t size;
+ char *cp;
+
+ subseg_set (str_seg, 0);
+ out_byte (0);
+ for (i = 0; i < strtab->strings_in_use; i++)
+ {
+ size = strlen (strtab->strings[i]) + 1;
+ cp = frag_more (size);
+ memcpy (cp, strtab->strings[i], size);
+ }
+}
+
+static void
+out_dwarf5_file_list (segT str_seg, int sizeof_offset)
+{
+ const char *dir;
+ offsetT strp;
+ unsigned int i;
+ expressionS exp;
+ unsigned int dir_count = dirs_in_use > 0 ? dirs_in_use - 1 : 0;
+ unsigned int file_count = files_in_use > 0 ? files_in_use - 1 : 0;
+
+ exp.X_op = O_symbol;
+ exp.X_add_symbol = section_symbol (str_seg);
+
+ out_byte (1); /* directory_entry_format_count */
+ out_uleb128 (DW_LNCT_path); /* directory_entry_format[0].content_type */
+ out_uleb128 (DW_FORM_line_strp); /* directory_entry_format[0].form */
+ out_uleb128 (dir_count); /* directories_count */
+
+ /* Emit directories list. */
+ for (i = 1; i < dirs_in_use; ++i)
+ {
+ dir = remap_debug_filename (dirs[i]);
+ strp = add_to_string_table (&debug_line_str_table, dir);
+ exp.X_add_number = strp;
+ emit_expr (&exp, sizeof_offset);
+ }
+
+ out_byte (2); /* file_name_entry_format_count */
+ out_uleb128 (DW_LNCT_path); /* file_name_entry_format[0].type */
+ out_uleb128 (DW_FORM_line_strp); /* file_name_entry_format[0].form */
+ out_uleb128 (DW_LNCT_directory_index); /* file_name_entry_format[0].type */
+ out_uleb128 (DW_FORM_udata); /* file_name_entry_format[0].form */
+ out_uleb128 (file_count); /* file_names_count */
+
+ /* Emit file_names list. */
+ for (i = 1; i < files_in_use; ++i)
+ {
+ const char *fullfilename;
+
+ if (files[i].filename == NULL)
+ {
+ as_bad (_("unassigned file number %ld"), (long) i);
+ /* Prevent a crash later, particularly for file 1. */
+ files[i].filename = "";
+ }
+
+ fullfilename = DWARF2_FILE_NAME (files[i].filename,
+ files[i].dir ? dirs [files [i].dir] : "");
+ strp = add_to_string_table (&debug_line_str_table, fullfilename);
+ exp.X_add_number = strp;
+ emit_expr (&exp, sizeof_offset);
+ out_uleb128 (files[i].dir); /* directory number */
+ }
+}
+
+static void
+out_subprog_list (segT str_seg, int sizeof_offset)
+{
+ const char *name;
+ offsetT strp;
+ unsigned int i;
+ expressionS exp;
+
+ exp.X_op = O_symbol;
+ exp.X_add_symbol = section_symbol (str_seg);
+
+ out_byte (3); /* subprogram_entry_format_count */
+ out_uleb128 (DW_LNCT_subprogram_name); /* subprogram_entry_format[0].type */
+ out_uleb128 (DW_FORM_line_strp); /* subprogram_entry_format[0].form */
+ out_uleb128 (DW_LNCT_decl_file); /* subprogram_entry_format[1].type */
+ out_uleb128 (DW_FORM_udata); /* subprogram_entry_format[1].form */
+ out_uleb128 (DW_LNCT_decl_line); /* subprogram_entry_format[2].type */
+ out_uleb128 (DW_FORM_udata); /* subprogram_entry_format[2].form */
+ out_uleb128 (subprogs_in_use); /* subprograms_count */
+
+ /* Emit subprograms list. */
+ for (i = 0; i < subprogs_in_use; ++i)
+ {
+ name = subprogs[i].subpname;
+ if (name == NULL)
+ {
+ as_bad (_("unassigned subprogram number %ld"), (long) i);
+ strp = 0;
+ }
+ else
+ strp = add_to_string_table (&debug_line_str_table, name);
+ exp.X_add_number = strp;
+ emit_expr (&exp, sizeof_offset);
+ out_uleb128 (subprogs[i].filenum);
+ out_uleb128 (subprogs[i].line);
+ }
+}
+
/* Switch to SEC and output a header length field. Return the size of
offsets used in SEC. The caller must set EXPR->X_add_symbol value
to the end of the section. */
@@ -1501,19 +2071,35 @@ out_header (asection *sec, expressionS *exp)
/* Emit the collected .debug_line data. */
static void
-out_debug_line (segT line_seg)
+out_debug_line (segT line_seg, segT str_seg)
{
expressionS exp;
- symbolS *prologue_start, *prologue_end;
+ symbolS *prologue_start, *prologue_end, *logicals_start, *actuals_start;
symbolS *line_end;
struct line_seg *s;
int sizeof_offset;
+ unsigned int version;
+
+ if (logicals_in_use == 0)
+ {
+ version = DWARF2_LINE_VERSION;
+ opcode_base = DWARF2_LINE_OPCODE_BASE;
+ line_base = DWARF2_LINE_BASE;
+ line_range = DWARF2_LINE_RANGE;
+ }
+ else
+ {
+ version = DWARF2_LINE_EXPERIMENTAL_VERSION;
+ opcode_base = DWARF5_EXPERIMENTAL_LINE_OPCODE_BASE;
+ line_base = DWARF5_EXPERIMENTAL_LINE_BASE;
+ line_range = DWARF5_EXPERIMENTAL_LINE_RANGE;
+ }
sizeof_offset = out_header (line_seg, &exp);
line_end = exp.X_add_symbol;
/* Version. */
- out_two (DWARF2_LINE_VERSION);
+ out_two (version);
/* Length of the prologue following this length. */
prologue_start = symbol_temp_make ();
@@ -1527,10 +2113,12 @@ out_debug_line (segT line_seg)
/* Parameters of the state machine. */
out_byte (DWARF2_LINE_MIN_INSN_LENGTH);
+ if (version >= 4)
+ out_byte (DWARF2_LINE_MAX_OPS_PER_INSN);
out_byte (DWARF2_LINE_DEFAULT_IS_STMT);
- out_byte (DWARF2_LINE_BASE);
- out_byte (DWARF2_LINE_RANGE);
- out_byte (DWARF2_LINE_OPCODE_BASE);
+ out_byte (line_base);
+ out_byte (line_range);
+ out_byte (opcode_base);
/* Standard opcode lengths. */
out_byte (0); /* DW_LNS_copy */
@@ -1545,10 +2133,63 @@ out_debug_line (segT line_seg)
out_byte (0); /* DW_LNS_set_prologue_end */
out_byte (0); /* DW_LNS_set_epilogue_begin */
out_byte (1); /* DW_LNS_set_isa */
+ if (opcode_base == DWARF5_EXPERIMENTAL_LINE_OPCODE_BASE)
+ {
+ out_byte (1); /* DW_LNS_set_subprogram/DW_LNS_set_address_from_logical */
+ out_byte (2); /* DW_LNS_inlined_call */
+ out_byte (0); /* DW_LNS_pop_context */
+ }
- out_file_list ();
-
- symbol_set_value_now (prologue_end);
+ if (version == DWARF2_LINE_EXPERIMENTAL_VERSION)
+ {
+ /* Fake empty version 4 directory and filename lists, to fool
+ old consumers who don't check the version number. */
+ out_byte (0);
+ out_byte (0);
+
+ symbol_set_value_now (prologue_end);
+
+ /* Now wrap the remainder of the section inside a fake
+ extended opcode, so old consumers will see just the single
+ extended opcode, and will not try to read anything else.
+ For simplicity, we simply output a very large number for
+ the size of the extended op. */
+ out_opcode (DW_LNS_extended_op);
+ out_byte (255); /* 3-byte LEB128 for 0x1fffff. */
+ out_byte (255);
+ out_byte (127);
+ out_byte (127); /* Fake extended opcode. */
+
+ /* Logicals table offset. */
+ logicals_start = symbol_temp_make ();
+ exp.X_add_symbol = logicals_start;
+ emit_expr (&exp, sizeof_offset);
+
+ /* Actuals table offset. */
+ actuals_start = symbol_temp_make ();
+ exp.X_add_symbol = actuals_start;
+ emit_expr (&exp, sizeof_offset);
+
+ /* Directory and filename lists. */
+ out_dwarf5_file_list (str_seg, sizeof_offset);
+
+ /* Subprogram list. */
+ out_subprog_list (str_seg, sizeof_offset);
+
+ symbol_set_value_now (logicals_start);
+ emit_logicals ();
+ symbol_set_value_now (actuals_start);
+ }
+ else if (version >= 5)
+ {
+ out_dwarf5_file_list (str_seg, sizeof_offset);
+ symbol_set_value_now (prologue_end);
+ }
+ else
+ {
+ out_file_list ();
+ symbol_set_value_now (prologue_end);
+ }
/* For each section, emit a statement program. */
for (s = all_segs; s; s = s->next)
@@ -1851,11 +2492,13 @@ dwarf2_finish (void)
segT line_seg;
struct line_seg *s;
segT info_seg;
+ segT str_seg = NULL;
int emit_other_sections = 0;
int empty_debug_line = 0;
info_seg = bfd_get_section_by_name (stdoutput, ".debug_info");
- emit_other_sections = info_seg == NULL || !seg_not_empty_p (info_seg);
+ emit_other_sections = ((info_seg == NULL || !seg_not_empty_p (info_seg))
+ && logicals_in_use == 0);
line_seg = bfd_get_section_by_name (stdoutput, ".debug_line");
empty_debug_line = line_seg == NULL || !seg_not_empty_p (line_seg);
@@ -1892,7 +2535,23 @@ dwarf2_finish (void)
}
}
- out_debug_line (line_seg);
+ if (logicals_in_use > 0)
+ {
+ str_seg = subseg_new (".debug_line_str", 0);
+ bfd_set_section_flags (stdoutput, str_seg,
+ (SEC_READONLY | SEC_DEBUGGING
+ | SEC_MERGE | SEC_STRINGS));
+ str_seg->entsize = 1;
+ debug_line_str_table.strings = NULL;
+ debug_line_str_table.strings_in_use = 0;
+ debug_line_str_table.strings_allocated = 0;
+ debug_line_str_table.next_offset = 1;
+ }
+
+ out_debug_line (line_seg, str_seg);
+
+ if (str_seg != NULL)
+ out_string_table (str_seg, &debug_line_str_table);
/* If this is assembler generated line info, and there is no
debug_info already, we need .debug_info and .debug_abbrev
diff --git a/binutils-2.25/gas/dwarf2dbg.h b/binutils-2.25/gas/dwarf2dbg.h
index fdb185f..d3112a9 100644
--- a/binutils-2.25/gas/dwarf2dbg.h
+++ b/binutils-2.25/gas/dwarf2dbg.h
@@ -35,6 +35,7 @@ struct dwarf2_line_info {
unsigned int isa;
unsigned int flags;
unsigned int discriminator;
+ unsigned int logical;
};
/* Implements the .file FILENO "FILENAME" directive. FILENO can be 0
@@ -42,13 +43,29 @@ struct dwarf2_line_info {
number must be >0. */
extern char *dwarf2_directive_file (int dummy);
+/* Experimental DWARF-5 extension:
+ Implements the .subprog SUBPNO ["SUBPROG" [FILENO LINENO]] directive.
+ FILENO is the file number, LINENO the line number and the
+ (optional) COLUMN the column of the source code that the following
+ instruction corresponds to. FILENO can be 0 to indicate that the
+ filename specified by the textually most recent .file directive
+ should be used. */
+extern void dwarf2_directive_subprog (int dummy);
+
/* Implements the .loc FILENO LINENO [COLUMN] directive. FILENO is
the file number, LINENO the line number and the (optional) COLUMN
the column of the source code that the following instruction
corresponds to. FILENO can be 0 to indicate that the filename
specified by the textually most recent .file directive should be
used. */
-extern void dwarf2_directive_loc (int dummy);
+/* Experimental DWARF-5 extension:
+ If IS_LLOC is true, implements the .lloc LOGICAL [FILENO LINENO [COLUMN]]
+ directive. FILENO is the file number, LINENO the line number and the
+ (optional) COLUMN the column of the source code that the following
+ instruction corresponds to. FILENO can be 0 to indicate that the
+ filename specified by the textually most recent .file directive
+ should be used. */
+extern void dwarf2_directive_loc (int is_lloc);
/* Implements the .loc_mark_labels {0,1} directive. */
extern void dwarf2_directive_loc_mark_labels (int dummy);
diff --git a/binutils-2.25/gas/ecoff.c b/binutils-2.25/gas/ecoff.c
index 771c8b5..fe7ad05 100644
--- a/binutils-2.25/gas/ecoff.c
+++ b/binutils-2.25/gas/ecoff.c
@@ -1552,8 +1552,8 @@ add_string (varray_t *vp, /* string obstack */
const char *str, /* string */
shash_t **ret_hash /* return hash pointer */)
{
- register unsigned long len = strlen (str);
- register shash_t *hash_ptr;
+ unsigned long len = strlen (str);
+ shash_t *hash_ptr;
if (len >= PAGE_USIZE)
as_fatal (_("string too big (%lu bytes)"), len);
@@ -1561,7 +1561,7 @@ add_string (varray_t *vp, /* string obstack */
hash_ptr = (shash_t *) hash_find (hash_tbl, str);
if (hash_ptr == (shash_t *) NULL)
{
- register const char *err;
+ const char *err;
if (vp->objects_last_page + len >= PAGE_USIZE)
{
@@ -1604,12 +1604,12 @@ add_ecoff_symbol (const char *str, /* symbol name */
symint_t indx /* index to local/aux. syms */)
{
localsym_t *psym;
- register scope_t *pscope;
- register thead_t *ptag_head;
- register tag_t *ptag;
- register tag_t *ptag_next;
- register varray_t *vp;
- register int scope_delta = 0;
+ scope_t *pscope;
+ thead_t *ptag_head;
+ tag_t *ptag;
+ tag_t *ptag_next;
+ varray_t *vp;
+ int scope_delta = 0;
shash_t *hash_ptr = (shash_t *) NULL;
if (cur_file_ptr == (efdr_t *) NULL)
@@ -1802,8 +1802,8 @@ add_ecoff_symbol (const char *str, /* symbol name */
static symint_t
add_aux_sym_symint (symint_t aux_word /* auxiliary information word */)
{
- register varray_t *vp;
- register aux_t *aux_ptr;
+ varray_t *vp;
+ aux_t *aux_ptr;
if (cur_file_ptr == (efdr_t *) NULL)
as_fatal (_("no current file pointer"));
@@ -1825,8 +1825,8 @@ add_aux_sym_symint (symint_t aux_word /* auxiliary information word */)
static symint_t
add_aux_sym_rndx (int file_index, symint_t sym_index)
{
- register varray_t *vp;
- register aux_t *aux_ptr;
+ varray_t *vp;
+ aux_t *aux_ptr;
if (cur_file_ptr == (efdr_t *) NULL)
as_fatal (_("no current file pointer"));
@@ -1852,8 +1852,8 @@ add_aux_sym_tir (type_info_t *t, /* current type information */
hash_state_t state, /* whether to hash type or not */
thash_t **hash_tbl /* pointer to hash table to use */)
{
- register varray_t *vp;
- register aux_t *aux_ptr;
+ varray_t *vp;
+ aux_t *aux_ptr;
static AUXU init_aux;
symint_t ret;
int i;
@@ -1900,8 +1900,8 @@ add_aux_sym_tir (type_info_t *t, /* current type information */
if (state != hash_no)
{
- register thash_t *hash_ptr;
- register symint_t hi;
+ thash_t *hash_ptr;
+ symint_t hi;
hi = aux.isym & ((1 << HASHBITS) - 1);
hi %= THASH_SIZE;
@@ -1957,9 +1957,9 @@ add_aux_sym_tir (type_info_t *t, /* current type information */
|| t->basic_type == bt_Union
|| t->basic_type == bt_Enum)
{
- register symint_t file_index = t->tag_ptr->ifd;
- register localsym_t *sym = t->tag_ptr->sym;
- register forward_t *forward_ref = allocate_forward ();
+ symint_t file_index = t->tag_ptr->ifd;
+ localsym_t *sym = t->tag_ptr->sym;
+ forward_t *forward_ref = allocate_forward ();
if (sym != (localsym_t *) NULL)
{
@@ -2114,8 +2114,8 @@ add_unknown_tag (tag_t *ptag /* pointer to tag information */)
static void
add_procedure (char *func /* func name */)
{
- register varray_t *vp;
- register proc_t *new_proc_ptr;
+ varray_t *vp;
+ proc_t *new_proc_ptr;
symbolS *sym;
#ifdef ECOFF_DEBUG
@@ -2184,8 +2184,8 @@ ecoff_get_cur_proc_sym (void)
static void
add_file (const char *file_name, int indx ATTRIBUTE_UNUSED, int fake)
{
- register int first_ch;
- register efdr_t *fil_ptr;
+ int first_ch;
+ efdr_t *fil_ptr;
#ifdef ECOFF_DEBUG
if (debug)
@@ -3667,7 +3667,7 @@ ecoff_build_lineno (const struct ecoff_debug_swap *backend,
long *linecntptr)
{
char *bufptr;
- register lineno_list_t *l;
+ lineno_list_t *l;
lineno_list_t *last;
efdr_t *file;
proc_t *proc;
@@ -4592,7 +4592,7 @@ ecoff_build_fdr (const struct ecoff_debug_swap *backend,
static void
ecoff_setup_ext (void)
{
- register symbolS *sym;
+ symbolS *sym;
for (sym = symbol_rootP; sym != (symbolS *) NULL; sym = symbol_next (sym))
{
@@ -4788,7 +4788,7 @@ ecoff_build_debug (HDRR *hdr,
static page_type *
allocate_cluster (unsigned long npages)
{
- register page_type *value = (page_type *) xmalloc (npages * PAGE_USIZE);
+ page_type *value = (page_type *) xmalloc (npages * PAGE_USIZE);
#ifdef ECOFF_DEBUG
if (debug > 3)
@@ -4837,7 +4837,7 @@ allocate_page (void)
static scope_t *
allocate_scope (void)
{
- register scope_t *ptr;
+ scope_t *ptr;
static scope_t initial_scope;
#ifndef MALLOC_CHECK
@@ -4847,8 +4847,8 @@ allocate_scope (void)
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;
+ int unallocated = alloc_counts[(int) alloc_type_scope].unallocated;
+ page_type *cur_page = alloc_counts[(int) alloc_type_scope].cur_page;
if (unallocated == 0)
{
@@ -4892,13 +4892,13 @@ free_scope (scope_t *ptr)
static vlinks_t *
allocate_vlinks (void)
{
- register vlinks_t *ptr;
+ vlinks_t *ptr;
static vlinks_t initial_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;
+ int unallocated = alloc_counts[(int) alloc_type_vlinks].unallocated;
+ page_type *cur_page = alloc_counts[(int) alloc_type_vlinks].cur_page;
if (unallocated == 0)
{
@@ -4926,13 +4926,13 @@ allocate_vlinks (void)
static shash_t *
allocate_shash (void)
{
- register shash_t *ptr;
+ shash_t *ptr;
static shash_t initial_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;
+ int unallocated = alloc_counts[(int) alloc_type_shash].unallocated;
+ page_type *cur_page = alloc_counts[(int) alloc_type_shash].cur_page;
if (unallocated == 0)
{
@@ -4960,13 +4960,13 @@ allocate_shash (void)
static thash_t *
allocate_thash (void)
{
- register thash_t *ptr;
+ thash_t *ptr;
static thash_t initial_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;
+ int unallocated = alloc_counts[(int) alloc_type_thash].unallocated;
+ page_type *cur_page = alloc_counts[(int) alloc_type_thash].cur_page;
if (unallocated == 0)
{
@@ -4994,7 +4994,7 @@ allocate_thash (void)
static tag_t *
allocate_tag (void)
{
- register tag_t *ptr;
+ tag_t *ptr;
static tag_t initial_tag;
#ifndef MALLOC_CHECK
@@ -5004,8 +5004,8 @@ allocate_tag (void)
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;
+ int unallocated = alloc_counts[(int) alloc_type_tag].unallocated;
+ page_type *cur_page = alloc_counts[(int) alloc_type_tag].cur_page;
if (unallocated == 0)
{
@@ -5049,13 +5049,13 @@ free_tag (tag_t *ptr)
static forward_t *
allocate_forward (void)
{
- register forward_t *ptr;
+ forward_t *ptr;
static forward_t initial_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;
+ int unallocated = alloc_counts[(int) alloc_type_forward].unallocated;
+ page_type *cur_page = alloc_counts[(int) alloc_type_forward].cur_page;
if (unallocated == 0)
{
@@ -5083,7 +5083,7 @@ allocate_forward (void)
static thead_t *
allocate_thead (void)
{
- register thead_t *ptr;
+ thead_t *ptr;
static thead_t initial_thead;
#ifndef MALLOC_CHECK
@@ -5093,8 +5093,8 @@ allocate_thead (void)
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;
+ int unallocated = alloc_counts[(int) alloc_type_thead].unallocated;
+ page_type *cur_page = alloc_counts[(int) alloc_type_thead].cur_page;
if (unallocated == 0)
{
@@ -5136,13 +5136,13 @@ free_thead (thead_t *ptr)
static lineno_list_t *
allocate_lineno_list (void)
{
- register lineno_list_t *ptr;
+ lineno_list_t *ptr;
static lineno_list_t initial_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;
+ int unallocated = alloc_counts[(int) alloc_type_lineno].unallocated;
+ page_type *cur_page = alloc_counts[(int) alloc_type_lineno].cur_page;
if (unallocated == 0)
{
diff --git a/binutils-2.25/gas/expr.c b/binutils-2.25/gas/expr.c
index 0ccfbd3..b8266fc 100644
--- a/binutils-2.25/gas/expr.c
+++ b/binutils-2.25/gas/expr.c
@@ -124,7 +124,7 @@ make_expr_symbol (expressionS *expressionP)
int
expr_symbol_where (symbolS *sym, char **pfile, unsigned int *pline)
{
- register struct expr_symbol_line *l;
+ struct expr_symbol_line *l;
for (l = expr_symbol_lines; l != NULL; l = l->next)
{
diff --git a/binutils-2.25/gas/frags.c b/binutils-2.25/gas/frags.c
index defa853..beaceee 100644
--- a/binutils-2.25/gas/frags.c
+++ b/binutils-2.25/gas/frags.c
@@ -206,13 +206,13 @@ frag_new (size_t old_frags_var_max_size
char *
frag_more (size_t nchars)
{
- register char *retval;
+ char *retval;
frag_alloc_check (&frchain_now->frch_obstack);
frag_grow (nchars);
retval = obstack_next_free (&frchain_now->frch_obstack);
obstack_blank_fast (&frchain_now->frch_obstack, nchars);
- return (retval);
+ return retval;
}
/* Close the current frag, setting its fields for a relaxable frag. Start a
@@ -254,7 +254,7 @@ frag_var (relax_stateT type, size_t max_chars, size_t var,
relax_substateT subtype, symbolS *symbol, offsetT offset,
char *opcode)
{
- register char *retval;
+ char *retval;
frag_grow (max_chars);
retval = obstack_next_free (&frchain_now->frch_obstack);
@@ -272,7 +272,7 @@ frag_variant (relax_stateT type, size_t max_chars, size_t var,
relax_substateT subtype, symbolS *symbol, offsetT offset,
char *opcode)
{
- register char *retval;
+ char *retval;
retval = obstack_next_free (&frchain_now->frch_obstack);
frag_var_init (type, max_chars, var, subtype, symbol, offset, opcode);
@@ -283,7 +283,7 @@ frag_variant (relax_stateT type, size_t max_chars, size_t var,
/* Reduce the variable end of a frag to a harmless state. */
void
-frag_wane (register fragS *fragP)
+frag_wane (fragS *fragP)
{
fragP->fr_type = rs_fill;
fragP->fr_offset = 0;
diff --git a/binutils-2.25/gas/input-file.c b/binutils-2.25/gas/input-file.c
index 354ff56..f1f2ec5 100644
--- a/binutils-2.25/gas/input-file.c
+++ b/binutils-2.25/gas/input-file.c
@@ -79,7 +79,7 @@ input_file_buffer_size (void)
char *
input_file_push (void)
{
- register struct saved_file *saved;
+ struct saved_file *saved;
saved = (struct saved_file *) xmalloc (sizeof *saved);
@@ -98,7 +98,7 @@ input_file_push (void)
void
input_file_pop (char *arg)
{
- register struct saved_file *saved = (struct saved_file *) arg;
+ struct saved_file *saved = (struct saved_file *) arg;
input_file_end (); /* Close out old file. */
diff --git a/binutils-2.25/gas/input-scrub.c b/binutils-2.25/gas/input-scrub.c
index 042005a..5388e81 100644
--- a/binutils-2.25/gas/input-scrub.c
+++ b/binutils-2.25/gas/input-scrub.c
@@ -137,7 +137,7 @@ static struct input_save *next_saved_file;
static struct input_save *
input_scrub_push (char *saved_position)
{
- register struct input_save *saved;
+ struct input_save *saved;
saved = (struct input_save *) xmalloc (sizeof *saved);
@@ -311,7 +311,7 @@ input_scrub_close (void)
char *
input_scrub_next_buffer (char **bufp)
{
- register char *limit; /*->just after last char of buffer. */
+ char *limit; /*->just after last char of buffer. */
if (sb_index != (size_t) -1)
{
@@ -354,7 +354,7 @@ input_scrub_next_buffer (char **bufp)
+ partial_size);
if (limit)
{
- register char *p; /* Find last newline. */
+ char *p; /* Find last newline. */
/* Terminate the buffer to avoid confusing TC_EOL_IN_INSN. */
*limit = '\0';
for (p = limit - 1; *p != '\n' || TC_EOL_IN_INSN (p); --p)
diff --git a/binutils-2.25/gas/po/gas.pot b/binutils-2.25/gas/po/gas.pot
index 622d08b..e7e8dce 100644
--- a/binutils-2.25/gas/po/gas.pot
+++ b/binutils-2.25/gas/po/gas.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2014-02-10 09:42+1030\n"
+"POT-Creation-Date: 2014-11-04 15:27+1030\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"
@@ -17,41 +17,41 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: app.c:489 app.c:503
+#: app.c:490 app.c:504
msgid "end of file in comment"
msgstr ""
-#: app.c:581 app.c:628
+#: app.c:582 app.c:629
#, c-format
msgid "end of file in string; '%c' inserted"
msgstr ""
-#: app.c:654
+#: app.c:655
#, c-format
msgid "unknown escape '\\%c' in string; ignored"
msgstr ""
-#: app.c:827
+#: app.c:828
msgid "end of file not at end of a line; newline inserted"
msgstr ""
-#: app.c:990
+#: app.c:991
msgid "end of file in multiline comment"
msgstr ""
-#: app.c:1065
+#: app.c:1066
msgid "end of file after a one-character quote; \\0 inserted"
msgstr ""
-#: app.c:1073
+#: app.c:1074
msgid "end of file in escape character"
msgstr ""
-#: app.c:1085
+#: app.c:1086
msgid "missing close quote; (assumed)"
msgstr ""
-#: app.c:1154 app.c:1209 app.c:1221 app.c:1301
+#: app.c:1155 app.c:1210 app.c:1222 app.c:1302
msgid "end of file in comment; newline inserted"
msgstr ""
@@ -372,7 +372,7 @@ msgstr ""
#: as.c:629
#, c-format
-msgid "Copyright 2014 Free Software Foundation, Inc.\n"
+msgid "Copyright (C) 2014 Free Software Foundation, Inc.\n"
msgstr ""
#: as.c:630
@@ -462,9 +462,34 @@ msgstr ""
msgid "%s: data size %ld\n"
msgstr ""
-#: as.c:1308
+#: as.c:1268
#, c-format
-msgid "%d warnings, treating warnings as errors"
+msgid "%d warning"
+msgstr ""
+
+#: as.c:1270
+#, c-format
+msgid "%d warnings"
+msgstr ""
+
+#: as.c:1272
+#, c-format
+msgid "%d error"
+msgstr ""
+
+#: as.c:1274
+#, c-format
+msgid "%d errors"
+msgstr ""
+
+#: as.c:1279
+#, c-format
+msgid "%s, treating warnings as errors"
+msgstr ""
+
+#: as.c:1290
+#, c-format
+msgid "%s, %s, generating bad object file\n"
msgstr ""
#: as.h:189
@@ -476,264 +501,265 @@ msgstr ""
#. * We have a GROSS internal error.
#. * This should never happen.
#.
-#: atof-generic.c:417 config/tc-m68k.c:3583
+#: atof-generic.c:416 config/tc-m68k.c:3581
msgid "failed sanity check"
msgstr ""
-#: cgen.c:113 config/tc-alpha.c:2101 config/tc-alpha.c:2125
-#: config/tc-arc.c:1684 config/tc-d10v.c:552 config/tc-d30v.c:538
-#: config/tc-mn10200.c:1101 config/tc-mn10300.c:1753 config/tc-ppc.c:2861
-#: config/tc-ppc.c:3038 config/tc-ppc.c:3307 config/tc-s390.c:1262
-#: config/tc-s390.c:1382 config/tc-s390.c:1511 config/tc-v850.c:2523
-#: config/tc-v850.c:2594 config/tc-v850.c:2641 config/tc-v850.c:2678
-#: config/tc-v850.c:2715 config/tc-v850.c:2976
+#: cgen.c:112 config/tc-alpha.c:2099 config/tc-alpha.c:2123
+#: config/tc-arc.c:1685 config/tc-d10v.c:550 config/tc-d30v.c:537
+#: config/tc-mn10200.c:1101 config/tc-mn10300.c:1753 config/tc-ppc.c:2865
+#: config/tc-ppc.c:3042 config/tc-ppc.c:3302 config/tc-s390.c:1261
+#: config/tc-s390.c:1381 config/tc-s390.c:1510 config/tc-v850.c:2526
+#: config/tc-v850.c:2597 config/tc-v850.c:2644 config/tc-v850.c:2681
+#: config/tc-v850.c:2718 config/tc-v850.c:2979
msgid "too many fixups"
msgstr ""
-#: cgen.c:400 cgen.c:420 config/tc-arc.c:1665 config/tc-d10v.c:463
-#: config/tc-d30v.c:454 config/tc-i370.c:2125 config/tc-mn10200.c:1043
-#: config/tc-mn10300.c:1678 config/tc-ppc.c:2903 config/tc-s390.c:1233
-#: config/tc-v850.c:2632 config/tc-v850.c:2666 config/tc-v850.c:2706
-#: config/tc-v850.c:2949 config/tc-z80.c:444
+#: cgen.c:399 cgen.c:419 config/tc-arc.c:1666 config/tc-d10v.c:461
+#: config/tc-d30v.c:453 config/tc-i370.c:2124 config/tc-mn10200.c:1043
+#: config/tc-mn10300.c:1678 config/tc-ppc.c:2907 config/tc-s390.c:1232
+#: config/tc-v850.c:2635 config/tc-v850.c:2669 config/tc-v850.c:2709
+#: config/tc-v850.c:2952 config/tc-z80.c:444
msgid "illegal operand"
msgstr ""
-#: cgen.c:424 config/tc-arc.c:1667 config/tc-avr.c:639 config/tc-d10v.c:465
-#: config/tc-d30v.c:456 config/tc-h8300.c:497 config/tc-i370.c:2127
-#: config/tc-mcore.c:662 config/tc-microblaze.c:604 config/tc-mmix.c:495
-#: config/tc-mn10200.c:1046 config/tc-mn10300.c:1681 config/tc-msp430.c:883
-#: config/tc-or32.c:307 config/tc-ppc.c:2905 config/tc-s390.c:1251
-#: config/tc-sh.c:1386 config/tc-sh64.c:2213 config/tc-v850.c:2636
-#: config/tc-v850.c:2670 config/tc-v850.c:2710 config/tc-v850.c:2952
-#: config/tc-xgate.c:897 config/tc-z80.c:555 config/tc-z8k.c:350
+#: cgen.c:423 config/tc-arc.c:1668 config/tc-avr.c:712 config/tc-d10v.c:463
+#: config/tc-d30v.c:455 config/tc-h8300.c:497 config/tc-i370.c:2126
+#: config/tc-mcore.c:661 config/tc-microblaze.c:604 config/tc-mmix.c:495
+#: config/tc-mn10200.c:1046 config/tc-mn10300.c:1681 config/tc-msp430.c:420
+#: config/tc-ppc.c:2909 config/tc-s390.c:1250 config/tc-sh.c:1385
+#: config/tc-sh64.c:2212 config/tc-v850.c:2639 config/tc-v850.c:2673
+#: config/tc-v850.c:2713 config/tc-v850.c:2955 config/tc-xgate.c:896
+#: config/tc-z80.c:555 config/tc-z8k.c:349
msgid "missing operand"
msgstr ""
-#: cgen.c:800
+#: cgen.c:799
msgid "a reloc on this operand implies an overflow"
msgstr ""
-#: cgen.c:823
+#: cgen.c:822
msgid "operand mask overflow"
msgstr ""
#. We can't actually support subtracting a symbol.
-#: cgen.c:887 config/tc-arc.c:1249 config/tc-arm.c:1683 config/tc-arm.c:9384
-#: config/tc-arm.c:9436 config/tc-arm.c:9685 config/tc-arm.c:10506
-#: config/tc-arm.c:11632 config/tc-arm.c:11672 config/tc-arm.c:12015
-#: config/tc-arm.c:12056 config/tc-avr.c:1172 config/tc-avr.c:1397
-#: config/tc-cris.c:4047 config/tc-d10v.c:1511 config/tc-d30v.c:1915
-#: config/tc-mips.c:8510 config/tc-mips.c:9797 config/tc-mips.c:11029
-#: config/tc-mips.c:11684 config/tc-nds32.c:5775 config/tc-ppc.c:6515
-#: config/tc-spu.c:957 config/tc-spu.c:981 config/tc-tilegx.c:1485
-#: config/tc-tilepro.c:1346 config/tc-v850.c:3435 config/tc-xstormy16.c:483
-#: config/tc-xtensa.c:5833 config/tc-xtensa.c:11830
+#: cgen.c:886 config/tc-arc.c:1250 config/tc-arm.c:1698 config/tc-arm.c:9942
+#: config/tc-arm.c:9994 config/tc-arm.c:10243 config/tc-arm.c:11064
+#: config/tc-arm.c:12190 config/tc-arm.c:12230 config/tc-arm.c:12573
+#: config/tc-arm.c:12614 config/tc-avr.c:1333 config/tc-avr.c:1344
+#: config/tc-avr.c:1607 config/tc-cris.c:4067 config/tc-d10v.c:1507
+#: config/tc-d30v.c:1912 config/tc-mips.c:9070 config/tc-mips.c:10357
+#: config/tc-mips.c:11613 config/tc-mips.c:12272 config/tc-nds32.c:6452
+#: config/tc-ppc.c:6523 config/tc-spu.c:957 config/tc-spu.c:981
+#: config/tc-tilegx.c:1485 config/tc-tilepro.c:1346 config/tc-v850.c:3438
+#: config/tc-vax.c:282 config/tc-xstormy16.c:481 config/tc-xtensa.c:5856
+#: config/tc-xtensa.c:12385
msgid "expression too complex"
msgstr ""
-#: cgen.c:983 config/tc-arc.c:1310 config/tc-ppc.c:6832 config/tc-ppc.c:7048
-#: config/tc-s390.c:2246 config/tc-v850.c:3487 config/tc-xstormy16.c:537
+#: cgen.c:982 config/tc-arc.c:1311 config/tc-ppc.c:6840 config/tc-ppc.c:7067
+#: config/tc-s390.c:2245 config/tc-v850.c:3490 config/tc-xstormy16.c:535
msgid "unresolved expression that must be resolved"
msgstr ""
-#: cgen.c:1008 config/tc-xstormy16.c:562
+#: cgen.c:1007 config/tc-xstormy16.c:560
#, c-format
msgid "internal error: can't install fix for reloc type %d (`%s')"
msgstr ""
-#: cgen.c:1061 config/tc-nios2.c:1231
+#: cgen.c:1060 config/tc-nios2.c:1193
msgid "relocation is not supported"
msgstr ""
-#: cond.c:83
+#: cond.c:82
msgid "invalid identifier for \".ifdef\""
msgstr ""
-#: cond.c:150
+#: cond.c:149
msgid "non-constant expression in \".if\" statement"
msgstr ""
-#: cond.c:277
+#: cond.c:276
msgid "bad format for ifc or ifnc"
msgstr ""
-#: cond.c:307
+#: cond.c:306
msgid "\".elseif\" without matching \".if\""
msgstr ""
-#: cond.c:311
+#: cond.c:310
msgid "\".elseif\" after \".else\""
msgstr ""
-#: cond.c:314 cond.c:420
+#: cond.c:313 cond.c:419
msgid "here is the previous \".else\""
msgstr ""
-#: cond.c:317 cond.c:423
+#: cond.c:316 cond.c:422
msgid "here is the previous \".if\""
msgstr ""
-#: cond.c:346
+#: cond.c:345
msgid "non-constant expression in \".elseif\" statement"
msgstr ""
-#: cond.c:384
+#: cond.c:383
msgid "\".endif\" without \".if\""
msgstr ""
-#: cond.c:413
+#: cond.c:412
msgid "\".else\" without matching \".if\""
msgstr ""
-#: cond.c:417
+#: cond.c:416
msgid "duplicate \".else\""
msgstr ""
-#: cond.c:468
+#: cond.c:467
msgid ".ifeqs syntax error"
msgstr ""
-#: cond.c:549
+#: cond.c:548
msgid "end of macro inside conditional"
msgstr ""
-#: cond.c:551
+#: cond.c:550
msgid "end of file inside conditional"
msgstr ""
-#: cond.c:554
+#: cond.c:553
msgid "here is the start of the unterminated conditional"
msgstr ""
-#: cond.c:558
+#: cond.c:557
msgid "here is the \"else\" of the unterminated conditional"
msgstr ""
-#: config/atof-ieee.c:141
+#: config/atof-ieee.c:140
msgid "cannot create floating-point number"
msgstr ""
-#: config/atof-ieee.c:288
+#: config/atof-ieee.c:287
msgid "NaNs are not supported by this target\n"
msgstr ""
-#: config/atof-ieee.c:327 config/atof-ieee.c:368
+#: config/atof-ieee.c:326 config/atof-ieee.c:367
msgid "Infinities are not supported by this target\n"
msgstr ""
-#: config/atof-ieee.c:784 config/atof-vax.c:450 config/tc-arm.c:1070
-#: config/tc-ia64.c:11651 config/tc-tic30.c:1259 config/tc-tic4x.c:2592
+#: config/atof-ieee.c:783 config/atof-vax.c:449 config/tc-arm.c:1085
+#: config/tc-ia64.c:11652 config/tc-tic30.c:1258 config/tc-tic4x.c:2590
msgid "Unrecognized or unsupported floating point constant"
msgstr ""
-#: config/obj-aout.c:84
+#: config/obj-aout.c:81
#, c-format
msgid "Attempt to put a common symbol into set %s"
msgstr ""
-#: config/obj-aout.c:88
+#: config/obj-aout.c:85
#, c-format
msgid "Attempt to put an undefined symbol into set %s"
msgstr ""
-#: config/obj-aout.c:115 config/obj-coff.c:1401
+#: config/obj-aout.c:112 config/obj-coff.c:1398
#, c-format
msgid "Symbol `%s' can not be both weak and common"
msgstr ""
-#: config/obj-coff.c:141 dw2gencfi.c:214
+#: config/obj-coff.c:138 dw2gencfi.c:213
#, c-format
msgid "Inserting \"%s\" into structure table failed: %s"
msgstr ""
-#: config/obj-coff.c:220 config/obj-coff.c:1705 config/tc-ppc.c:5519
-#: config/tc-tic54x.c:4008 read.c:2896
+#: config/obj-coff.c:217 config/obj-coff.c:1702 config/tc-ppc.c:5527
+#: config/tc-tic54x.c:4007 read.c:2900
#, c-format
msgid "error setting flags for \"%s\": %s"
msgstr ""
#. Zero is used as an end marker in the file.
-#: config/obj-coff.c:439
+#: config/obj-coff.c:436
msgid "Line numbers must be positive integers\n"
msgstr ""
-#: config/obj-coff.c:471
+#: config/obj-coff.c:468
msgid ".ln pseudo-op inside .def/.endef: ignored."
msgstr ""
-#: config/obj-coff.c:513 ecoff.c:3249
+#: config/obj-coff.c:510 ecoff.c:3247
msgid ".loc outside of .text"
msgstr ""
-#: config/obj-coff.c:520
+#: config/obj-coff.c:517
msgid ".loc pseudo-op inside .def/.endef: ignored."
msgstr ""
-#: config/obj-coff.c:601
+#: config/obj-coff.c:598
msgid ".def pseudo-op used inside of .def/.endef: ignored."
msgstr ""
-#: config/obj-coff.c:637
+#: config/obj-coff.c:634
msgid ".endef pseudo-op used outside of .def/.endef: ignored."
msgstr ""
-#: config/obj-coff.c:676
+#: config/obj-coff.c:673
#, c-format
msgid "`%s' symbol without preceding function"
msgstr ""
-#: config/obj-coff.c:763
+#: config/obj-coff.c:760
#, c-format
msgid "unexpected storage class %d"
msgstr ""
-#: config/obj-coff.c:871
+#: config/obj-coff.c:868
msgid ".dim pseudo-op used outside of .def/.endef: ignored."
msgstr ""
-#: config/obj-coff.c:891
+#: config/obj-coff.c:888
msgid "badly formed .dim directive ignored"
msgstr ""
-#: config/obj-coff.c:940
+#: config/obj-coff.c:937
msgid ".size pseudo-op used outside of .def/.endef ignored."
msgstr ""
-#: config/obj-coff.c:955
+#: config/obj-coff.c:952
msgid ".scl pseudo-op used outside of .def/.endef ignored."
msgstr ""
-#: config/obj-coff.c:972
+#: config/obj-coff.c:969
msgid ".tag pseudo-op used outside of .def/.endef ignored."
msgstr ""
-#: config/obj-coff.c:990
+#: config/obj-coff.c:987
#, c-format
msgid "tag not found for .tag %s"
msgstr ""
-#: config/obj-coff.c:1003
+#: config/obj-coff.c:1000
msgid ".type pseudo-op used outside of .def/.endef ignored."
msgstr ""
-#: config/obj-coff.c:1022
+#: config/obj-coff.c:1019
msgid ".val pseudo-op used outside of .def/.endef ignored."
msgstr ""
-#: config/obj-coff.c:1179
+#: config/obj-coff.c:1176
msgid "badly formed .weak directive ignored"
msgstr ""
-#: config/obj-coff.c:1357
+#: config/obj-coff.c:1354
msgid "mismatched .eb"
msgstr ""
-#: config/obj-coff.c:1380
+#: config/obj-coff.c:1377
#, c-format
msgid "C_EFCN symbol for %s out of scope"
msgstr ""
-#: config/obj-coff.c:1434
+#: config/obj-coff.c:1431
#, c-format
msgid "Warning: internal error: forgetting to set endndx of %s"
msgstr ""
@@ -741,240 +767,240 @@ msgstr ""
#. STYP_INFO
#. STYP_LIB
#. STYP_OVER
-#: config/obj-coff.c:1670
+#: config/obj-coff.c:1667
#, c-format
msgid "unsupported section attribute '%c'"
msgstr ""
-#: config/obj-coff.c:1674 config/tc-ppc.c:5501
+#: config/obj-coff.c:1671 config/tc-ppc.c:5509
#, c-format
msgid "unknown section attribute '%c'"
msgstr ""
-#: config/obj-coff.c:1717 config/obj-macho.c:276
+#: config/obj-coff.c:1714 config/obj-macho.c:276
#, c-format
msgid "Ignoring changed section attributes for %s"
msgstr ""
-#: config/obj-coff.c:1857
+#: config/obj-coff.c:1854
#, c-format
msgid "0x%lx: \"%s\" type = %ld, class = %d, segment = %d\n"
msgstr ""
-#: config/obj-ecoff.c:125
+#: config/obj-ecoff.c:124
msgid "Can't set GP value"
msgstr ""
-#: config/obj-ecoff.c:132
+#: config/obj-ecoff.c:131
msgid "Can't set register masks"
msgstr ""
-#: config/obj-elf.c:342 config/tc-sparc.c:4193 config/tc-v850.c:512
+#: config/obj-elf.c:340 config/tc-sparc.c:4276 config/tc-v850.c:509
#, c-format
msgid "bad .common segment %s"
msgstr ""
-#: config/obj-elf.c:419
+#: config/obj-elf.c:417
msgid "Missing symbol name in directive"
msgstr ""
-#: config/obj-elf.c:625
+#: config/obj-elf.c:623
#, c-format
msgid "setting incorrect section type for %s"
msgstr ""
-#: config/obj-elf.c:630
+#: config/obj-elf.c:628
#, c-format
msgid "ignoring incorrect section type for %s"
msgstr ""
-#: config/obj-elf.c:680
+#: config/obj-elf.c:678
#, c-format
msgid "setting incorrect section attributes for %s"
msgstr ""
-#: config/obj-elf.c:735
+#: config/obj-elf.c:733
#, c-format
msgid "ignoring changed section type for %s"
msgstr ""
-#: config/obj-elf.c:747
+#: config/obj-elf.c:745
#, c-format
msgid "ignoring changed section attributes for %s"
msgstr ""
-#: config/obj-elf.c:749
+#: config/obj-elf.c:747
#, c-format
msgid "ignoring changed section entity size for %s"
msgstr ""
-#: config/obj-elf.c:809
+#: config/obj-elf.c:807
msgid "unrecognized .section attribute: want a,e,w,x,M,S,G,T"
msgstr ""
-#: config/obj-elf.c:851 read.c:2880
+#: config/obj-elf.c:849 read.c:2884
msgid "unrecognized section type"
msgstr ""
-#: config/obj-elf.c:883
+#: config/obj-elf.c:881
msgid "unrecognized section attribute"
msgstr ""
-#: config/obj-elf.c:914 config/tc-alpha.c:4208
+#: config/obj-elf.c:912 config/tc-alpha.c:4206
msgid "missing name"
msgstr ""
-#: config/obj-elf.c:1045
+#: config/obj-elf.c:1043
msgid "invalid merge entity size"
msgstr ""
-#: config/obj-elf.c:1052
+#: config/obj-elf.c:1050
msgid "entity size for SHF_MERGE not specified"
msgstr ""
-#: config/obj-elf.c:1058
+#: config/obj-elf.c:1056
msgid "? section flag ignored with G present"
msgstr ""
-#: config/obj-elf.c:1082
+#: config/obj-elf.c:1080
msgid "group name for SHF_GROUP not specified"
msgstr ""
-#: config/obj-elf.c:1105
+#: config/obj-elf.c:1103
msgid "character following name is not '#'"
msgstr ""
-#: config/obj-elf.c:1224
+#: config/obj-elf.c:1222
msgid ".previous without corresponding .section; ignored"
msgstr ""
-#: config/obj-elf.c:1250
+#: config/obj-elf.c:1248
msgid ".popsection without corresponding .pushsection; ignored"
msgstr ""
-#: config/obj-elf.c:1296
+#: config/obj-elf.c:1294
msgid "expected comma after name in .symver"
msgstr ""
-#: config/obj-elf.c:1320
+#: config/obj-elf.c:1318
#, c-format
msgid "missing version name in `%s' for symbol `%s'"
msgstr ""
-#: config/obj-elf.c:1331
+#: config/obj-elf.c:1329
#, c-format
msgid "multiple versions [`%s'|`%s'] for symbol `%s'"
msgstr ""
-#: config/obj-elf.c:1368
+#: config/obj-elf.c:1366
#, c-format
msgid "expected `%s' to have already been set for .vtable_inherit"
msgstr ""
-#: config/obj-elf.c:1378
+#: config/obj-elf.c:1376
msgid "expected comma after name in .vtable_inherit"
msgstr ""
-#: config/obj-elf.c:1431
+#: config/obj-elf.c:1429
msgid "expected comma after name in .vtable_entry"
msgstr ""
-#: config/obj-elf.c:1507
+#: config/obj-elf.c:1561
#, c-format
msgid "Attribute name not recognised: %s"
msgstr ""
-#: config/obj-elf.c:1522
+#: config/obj-elf.c:1576
msgid "expected numeric constant"
msgstr ""
-#: config/obj-elf.c:1531 config/tc-arm.c:6097
+#: config/obj-elf.c:1585 config/tc-arm.c:6390
msgid "expected comma"
msgstr ""
-#: config/obj-elf.c:1563
+#: config/obj-elf.c:1618
msgid "bad string constant"
msgstr ""
-#: config/obj-elf.c:1567
+#: config/obj-elf.c:1622
msgid "expected <tag> , <value>"
msgstr ""
-#: config/obj-elf.c:1686
+#: config/obj-elf.c:1741
msgid "expected quoted string"
msgstr ""
-#: config/obj-elf.c:1706
+#: config/obj-elf.c:1761
#, c-format
msgid "expected comma after name `%s' in .size directive"
msgstr ""
-#: config/obj-elf.c:1715
+#: config/obj-elf.c:1770
msgid "missing expression in .size directive"
msgstr ""
-#: config/obj-elf.c:1839
+#: config/obj-elf.c:1894
#, c-format
msgid "symbol '%s' is already defined"
msgstr ""
-#: config/obj-elf.c:1860
+#: config/obj-elf.c:1915
#, c-format
msgid "symbol type \"%s\" is supported only by GNU and FreeBSD targets"
msgstr ""
-#: config/obj-elf.c:1872
+#: config/obj-elf.c:1927
#, c-format
msgid "symbol type \"%s\" is supported only by GNU targets"
msgstr ""
-#: config/obj-elf.c:1883
+#: config/obj-elf.c:1938
#, c-format
msgid "unrecognized symbol type \"%s\""
msgstr ""
-#: config/obj-elf.c:2053 config/obj-elf.c:2056
+#: config/obj-elf.c:2108 config/obj-elf.c:2111
#, c-format
msgid ".size expression for %s does not evaluate to a constant"
msgstr ""
-#: config/obj-elf.c:2088
+#: config/obj-elf.c:2145
#, c-format
msgid ""
"invalid attempt to declare external version name as default in symbol `%s'"
msgstr ""
-#: config/obj-elf.c:2149 ecoff.c:3607
+#: config/obj-elf.c:2207 ecoff.c:3605
#, c-format
msgid "symbol `%s' can not be both weak and common"
msgstr ""
-#: config/obj-elf.c:2266
+#: config/obj-elf.c:2324
#, c-format
msgid "assuming all members of group `%s' are COMDAT"
msgstr ""
-#: config/obj-elf.c:2278
+#: config/obj-elf.c:2336
#, c-format
msgid "can't create group: %s"
msgstr ""
-#: config/obj-elf.c:2417
+#: config/obj-elf.c:2474
#, c-format
msgid "failed to set up debugging information: %s"
msgstr ""
-#: config/obj-elf.c:2437
+#: config/obj-elf.c:2494
#, c-format
msgid "can't start writing .mdebug section: %s"
msgstr ""
-#: config/obj-elf.c:2445
+#: config/obj-elf.c:2502
#, c-format
msgid "could not write .mdebug section: %s"
msgstr ""
-#: config/obj-evax.c:130
+#: config/obj-evax.c:129
#, c-format
msgid "no entry symbol for global function '%s'"
msgstr ""
@@ -1018,31 +1044,31 @@ msgstr ""
msgid "missing sizeof_stub expression"
msgstr ""
-#: config/obj-macho.c:486 config/tc-ia64.c:1093 config/tc-ia64.c:11814
-#: config/tc-score.c:6105 read.c:1669
+#: config/obj-macho.c:486 config/tc-ia64.c:1093 config/tc-ia64.c:11815
+#: config/tc-score.c:6105 read.c:1673
msgid "expected symbol name"
msgstr ""
-#: config/obj-macho.c:499 read.c:490
+#: config/obj-macho.c:499 read.c:493
msgid "bad or irreducible absolute expression"
msgstr ""
-#: config/obj-macho.c:505 config/tc-score.c:6122 read.c:1707
+#: config/obj-macho.c:505 config/tc-score.c:6122 read.c:1711
msgid "missing size expression"
msgstr ""
-#: config/obj-macho.c:514 config/tc-ia64.c:1128 read.c:1713
+#: config/obj-macho.c:514 config/tc-ia64.c:1128 read.c:1717
#, c-format
msgid "size (%ld) out of range, ignored"
msgstr ""
-#: config/obj-macho.c:524 config/tc-score.c:6266 ecoff.c:3364 read.c:1725
-#: read.c:1831 read.c:2568 read.c:3198 read.c:3560 symbols.c:341 symbols.c:437
+#: config/obj-macho.c:524 config/tc-score.c:6266 ecoff.c:3362 read.c:1729
+#: read.c:1835 read.c:2572 read.c:3202 read.c:3564 symbols.c:339 symbols.c:435
#, c-format
msgid "symbol `%s' is already defined"
msgstr ""
-#: config/obj-macho.c:534 read.c:1740
+#: config/obj-macho.c:534 read.c:1744
#, c-format
msgid "size of \"%s\" is already %ld; not changing to %ld"
msgstr ""
@@ -1079,1243 +1105,1243 @@ msgstr ""
msgid "failed to set subsections by symbols"
msgstr ""
-#: config/obj-macho.c:1041
+#: config/obj-macho.c:1040
#, c-format
msgid "'%s' previously declared as '%s'."
msgstr ""
-#: config/obj-macho.c:1092 config/obj-macho.c:1412 config/obj-macho.c:1494
+#: config/obj-macho.c:1092 config/obj-macho.c:1414 config/obj-macho.c:1498
#, c-format
msgid ""
"'%s' can't be a weak_definition (currently only supported in sections of "
"type coalesced)"
msgstr ""
-#: config/obj-macho.c:1177
+#: config/obj-macho.c:1178
msgid "use of .indirect_symbols requires `-dynamic'"
msgstr ""
-#: config/obj-macho.c:1194
+#: config/obj-macho.c:1195
#, c-format
msgid ""
"attempt to add an indirect_symbol to a stub or reference section with a zero-"
"sized element at %s"
msgstr ""
-#: config/obj-macho.c:1225
+#: config/obj-macho.c:1226
msgid "an .indirect_symbol must be in a symbol pointer or stub section."
msgstr ""
-#: config/obj-macho.c:1491
+#: config/obj-macho.c:1495
#, c-format
msgid "'%s' can't be a weak_definition (since it is undefined)"
msgstr ""
-#: config/obj-macho.c:1497
+#: config/obj-macho.c:1501
#, c-format
msgid "Non-global symbol: '%s' can't be a weak_definition."
msgstr ""
-#: config/obj-macho.c:1503
+#: config/obj-macho.c:1507
#, c-format
msgid "internal error: [%s] unexpected code [%lx] in frob symbol"
msgstr ""
-#: config/obj-macho.c:1544
+#: config/obj-macho.c:1548
#, c-format
msgid "unrecognized stab type '%c'"
msgstr ""
-#: config/obj-macho.c:1595
+#: config/obj-macho.c:1599
#, c-format
msgid "`%s' can't be undefined in `%s' - `%s' {%s section}"
msgstr ""
-#: config/obj-macho.c:1603
+#: config/obj-macho.c:1607
#, c-format
msgid "`%s' can't be undefined in `%s' {%s section} - `%s'"
msgstr ""
-#: config/obj-macho.c:1610
+#: config/obj-macho.c:1614
#, c-format
msgid "`%s' and `%s' can't be undefined in `%s' - `%s'"
msgstr ""
-#: config/obj-macho.c:1812
+#: config/obj-macho.c:1816
#, c-format
msgid ""
"the number of .indirect_symbols defined in section %s does not match the "
"number expected (%d defined, %d expected)"
msgstr ""
-#: config/obj-macho.c:1825
+#: config/obj-macho.c:1829
#, c-format
msgid "internal error: failed to allocate %d indirectsymbol pointers"
msgstr ""
-#: config/obj-som.c:58
+#: config/obj-som.c:56
msgid "Only one .compiler pseudo-op per file!"
msgstr ""
-#: config/obj-som.c:75 config/obj-som.c:146 config/obj-som.c:188
+#: config/obj-som.c:73 config/obj-som.c:144 config/obj-som.c:186
msgid "Expected quoted string"
msgstr ""
-#: config/obj-som.c:88
+#: config/obj-som.c:86
msgid ".compiler directive missing language and version"
msgstr ""
-#: config/obj-som.c:98
+#: config/obj-som.c:96
msgid ".compiler directive missing version"
msgstr ""
-#: config/obj-som.c:114
+#: config/obj-som.c:112
#, c-format
msgid "FATAL: Attaching compiler header %s"
msgstr ""
-#: config/obj-som.c:129
+#: config/obj-som.c:127
msgid "Only one .version pseudo-op per file!"
msgstr ""
-#: config/obj-som.c:153
+#: config/obj-som.c:151
#, c-format
msgid "attaching version header %s: %s"
msgstr ""
-#: config/obj-som.c:171
+#: config/obj-som.c:169
msgid "Only one .copyright pseudo-op per file!"
msgstr ""
-#: config/obj-som.c:195
+#: config/obj-som.c:193
#, c-format
msgid "attaching copyright header %s: %s"
msgstr ""
-#: config/tc-aarch64.c:353
+#: config/tc-aarch64.c:354
msgid "integer 32-bit register expected"
msgstr ""
-#: config/tc-aarch64.c:356
+#: config/tc-aarch64.c:357
msgid "integer 64-bit register expected"
msgstr ""
-#: config/tc-aarch64.c:359
+#: config/tc-aarch64.c:360
msgid "integer register expected"
msgstr ""
-#: config/tc-aarch64.c:362
+#: config/tc-aarch64.c:363
msgid "integer, zero or SP register expected"
msgstr ""
-#: config/tc-aarch64.c:365
+#: config/tc-aarch64.c:366
msgid "8-bit SIMD scalar register expected"
msgstr ""
-#: config/tc-aarch64.c:368
+#: config/tc-aarch64.c:369
msgid "16-bit SIMD scalar or floating-point half precision register expected"
msgstr ""
-#: config/tc-aarch64.c:372
+#: config/tc-aarch64.c:373
msgid "32-bit SIMD scalar or floating-point single precision register expected"
msgstr ""
-#: config/tc-aarch64.c:376
+#: config/tc-aarch64.c:377
msgid "64-bit SIMD scalar or floating-point double precision register expected"
msgstr ""
-#: config/tc-aarch64.c:380
+#: config/tc-aarch64.c:381
msgid "128-bit SIMD scalar or floating-point quad precision register expected"
msgstr ""
-#: config/tc-aarch64.c:384
+#: config/tc-aarch64.c:385
msgid "C0 - C15 expected"
msgstr ""
-#: config/tc-aarch64.c:387 config/tc-arm.c:4119
+#: config/tc-aarch64.c:388 config/tc-arm.c:4365
msgid "register expected"
msgstr ""
#. any [BHSDQ]P FP
-#: config/tc-aarch64.c:390
+#: config/tc-aarch64.c:391
msgid "SIMD scalar or floating-point register expected"
msgstr ""
#. any V reg
-#: config/tc-aarch64.c:393
+#: config/tc-aarch64.c:394
msgid "vector register expected"
msgstr ""
-#: config/tc-aarch64.c:396
+#: config/tc-aarch64.c:397
#, c-format
msgid "invalid register type %d"
msgstr ""
#. Define some common error messages.
-#: config/tc-aarch64.c:408
+#: config/tc-aarch64.c:409
msgid "SP not allowed here"
msgstr ""
-#: config/tc-aarch64.c:551 config/tc-aarch64.c:553 config/tc-arm.c:979
-#: config/tc-score.c:6515 expr.c:1363 read.c:2550
+#: config/tc-aarch64.c:559 config/tc-aarch64.c:561 config/tc-arm.c:994
+#: config/tc-score.c:6515 expr.c:1361 read.c:2554
msgid "bad expression"
msgstr ""
-#: config/tc-aarch64.c:563 config/tc-arm.c:990 config/tc-i860.c:1004
-#: config/tc-sparc.c:3096
+#: config/tc-aarch64.c:571 config/tc-arm.c:1005 config/tc-i860.c:1003
+#: config/tc-sparc.c:3179
msgid "bad segment"
msgstr ""
-#: config/tc-aarch64.c:774
+#: config/tc-aarch64.c:782
#, c-format
msgid "bad size %d in vector width specifier"
msgstr ""
-#: config/tc-aarch64.c:807
+#: config/tc-aarch64.c:815
#, c-format
msgid "unexpected character `%c' in element size"
msgstr ""
-#: config/tc-aarch64.c:809
+#: config/tc-aarch64.c:817
msgid "missing element size"
msgstr ""
-#: config/tc-aarch64.c:815
+#: config/tc-aarch64.c:823
#, c-format
msgid "invalid element size %d and vector size combination %c"
msgstr ""
-#: config/tc-aarch64.c:842 config/tc-arm.c:1375
+#: config/tc-aarch64.c:850 config/tc-arm.c:1390
msgid "vector type expected"
msgstr ""
-#: config/tc-aarch64.c:923
+#: config/tc-aarch64.c:931
msgid "this type of register can't be indexed"
msgstr ""
-#: config/tc-aarch64.c:929
+#: config/tc-aarch64.c:937
msgid "index not allowed inside register list"
msgstr ""
-#: config/tc-aarch64.c:939 config/tc-aarch64.c:1839 config/tc-aarch64.c:1993
-#: config/tc-arm.c:1480 config/tc-arm.c:3400 config/tc-arm.c:4499
+#: config/tc-aarch64.c:947 config/tc-aarch64.c:1877 config/tc-aarch64.c:2031
+#: config/tc-arm.c:1495 config/tc-arm.c:3646 config/tc-arm.c:4761
msgid "constant expression required"
msgstr ""
#. Indexed vector register expected.
-#: config/tc-aarch64.c:951
+#: config/tc-aarch64.c:959
msgid "indexed vector register expected"
msgstr ""
-#: config/tc-aarch64.c:958
+#: config/tc-aarch64.c:966
msgid "invalid use of vector register"
msgstr ""
-#: config/tc-aarch64.c:1048 config/tc-arm.c:1744
+#: config/tc-aarch64.c:1056 config/tc-arm.c:1759
msgid "expecting {"
msgstr ""
-#: config/tc-aarch64.c:1073
+#: config/tc-aarch64.c:1081
msgid "invalid vector register in list"
msgstr ""
-#: config/tc-aarch64.c:1080
+#: config/tc-aarch64.c:1088
msgid "invalid scalar register in list"
msgstr ""
-#: config/tc-aarch64.c:1093
+#: config/tc-aarch64.c:1101
msgid "invalid range in vector register list"
msgstr ""
-#: config/tc-aarch64.c:1106
+#: config/tc-aarch64.c:1114
msgid "type mismatch in vector register list"
msgstr ""
-#: config/tc-aarch64.c:1123
+#: config/tc-aarch64.c:1131
msgid "end of vector register list not found"
msgstr ""
-#: config/tc-aarch64.c:1139
+#: config/tc-aarch64.c:1147
msgid "constant expression required."
msgstr ""
-#: config/tc-aarch64.c:1149
+#: config/tc-aarch64.c:1157
msgid "expected index"
msgstr ""
-#: config/tc-aarch64.c:1156
+#: config/tc-aarch64.c:1164
msgid "too many registers in vector register list"
msgstr ""
-#: config/tc-aarch64.c:1161
+#: config/tc-aarch64.c:1169
msgid "empty vector register list"
msgstr ""
-#: config/tc-aarch64.c:1183 config/tc-arm.c:2126
+#: config/tc-aarch64.c:1191 config/tc-arm.c:2141
#, c-format
msgid "ignoring attempt to redefine built-in register '%s'"
msgstr ""
-#: config/tc-aarch64.c:1189 config/tc-arm.c:2131
+#: config/tc-aarch64.c:1197 config/tc-arm.c:2146
#, c-format
msgid "ignoring redefinition of register alias '%s'"
msgstr ""
-#: config/tc-aarch64.c:1235 config/tc-arm.c:2198
+#: config/tc-aarch64.c:1243 config/tc-arm.c:2213
#, c-format
msgid "unknown register '%s' -- .req ignored"
msgstr ""
-#: config/tc-aarch64.c:1291 config/tc-arm.c:2405
+#: config/tc-aarch64.c:1299 config/tc-arm.c:2420
msgid "invalid syntax for .req directive"
msgstr ""
-#: config/tc-aarch64.c:1316 config/tc-arm.c:2443
+#: config/tc-aarch64.c:1324 config/tc-arm.c:2458
msgid "invalid syntax for .unreq directive"
msgstr ""
-#: config/tc-aarch64.c:1322 config/tc-arm.c:2450
+#: config/tc-aarch64.c:1330 config/tc-arm.c:2465
#, c-format
msgid "unknown register alias '%s'"
msgstr ""
-#: config/tc-aarch64.c:1324
+#: config/tc-aarch64.c:1332
#, c-format
msgid "ignoring attempt to undefine built-in register '%s'"
msgstr ""
-#: config/tc-aarch64.c:1639 config/tc-arm.c:3108
+#: config/tc-aarch64.c:1649 config/tc-arm.c:3263 config/tc-arm.c:3290
+#: config/tc-arm.c:3302
msgid "literal pool overflow"
msgstr ""
-#: config/tc-aarch64.c:1792 config/tc-aarch64.c:5020 config/tc-arm.c:3278
-#: config/tc-arm.c:6585
+#: config/tc-aarch64.c:1830 config/tc-aarch64.c:5055 config/tc-arm.c:3523
+#: config/tc-arm.c:6896
msgid "unrecognized relocation suffix"
msgstr ""
-#: config/tc-aarch64.c:1794
+#: config/tc-aarch64.c:1832
msgid "unimplemented relocation suffix"
msgstr ""
-#: config/tc-aarch64.c:1962 config/tc-aarch64.c:2196
+#: config/tc-aarch64.c:2000 config/tc-aarch64.c:2234
msgid "immediate operand required"
msgstr ""
-#: config/tc-aarch64.c:1970
+#: config/tc-aarch64.c:2008
msgid "missing immediate expression"
msgstr ""
-#: config/tc-aarch64.c:2176 config/tc-aarch64.c:4871
+#: config/tc-aarch64.c:2214 config/tc-aarch64.c:4906
msgid "invalid floating-point constant"
msgstr ""
-#: config/tc-aarch64.c:2548 config/tc-arm.c:4794 config/tc-arm.c:4803
+#: config/tc-aarch64.c:2586 config/tc-arm.c:5084 config/tc-arm.c:5093
msgid "shift expression expected"
msgstr ""
-#: config/tc-aarch64.c:2556
+#: config/tc-aarch64.c:2594
msgid "shift operator expected"
msgstr ""
-#: config/tc-aarch64.c:2564
+#: config/tc-aarch64.c:2602
msgid "invalid use of 'MSL'"
msgstr ""
-#: config/tc-aarch64.c:2573
+#: config/tc-aarch64.c:2611
msgid "extending shift is not permitted"
msgstr ""
-#: config/tc-aarch64.c:2581
+#: config/tc-aarch64.c:2619
msgid "'ROR' shift is not permitted"
msgstr ""
-#: config/tc-aarch64.c:2589
+#: config/tc-aarch64.c:2627
msgid "only 'LSL' shift is permitted"
msgstr ""
-#: config/tc-aarch64.c:2599
+#: config/tc-aarch64.c:2637
msgid "invalid shift for the register offset addressing mode"
msgstr ""
-#: config/tc-aarch64.c:2607
+#: config/tc-aarch64.c:2645
msgid "invalid shift operator"
msgstr ""
-#: config/tc-aarch64.c:2636
+#: config/tc-aarch64.c:2674
msgid "missing shift amount"
msgstr ""
-#: config/tc-aarch64.c:2643
+#: config/tc-aarch64.c:2681
msgid "constant shift amount required"
msgstr ""
-#: config/tc-aarch64.c:2648
+#: config/tc-aarch64.c:2686
msgid "shift amount out of range 0 to 63"
msgstr ""
-#: config/tc-aarch64.c:2697
+#: config/tc-aarch64.c:2735
msgid "unexpected shift operator"
msgstr ""
-#: config/tc-aarch64.c:2733
+#: config/tc-aarch64.c:2771
msgid "unexpected register in the immediate operand"
msgstr ""
-#: config/tc-aarch64.c:2758
+#: config/tc-aarch64.c:2796
msgid "integer register expected in the extended/shifted operand register"
msgstr ""
-#: config/tc-aarch64.c:2793 config/tc-aarch64.c:2904 config/tc-aarch64.c:3011
-#: config/tc-aarch64.c:3153 config/tc-aarch64.c:3200
+#: config/tc-aarch64.c:2831 config/tc-aarch64.c:2942 config/tc-aarch64.c:3049
+#: config/tc-aarch64.c:3191 config/tc-aarch64.c:3238
msgid "unknown relocation modifier"
msgstr ""
-#: config/tc-aarch64.c:2800 config/tc-aarch64.c:2911 config/tc-aarch64.c:3018
-#: config/tc-aarch64.c:3160 config/tc-aarch64.c:3207
+#: config/tc-aarch64.c:2838 config/tc-aarch64.c:2949 config/tc-aarch64.c:3056
+#: config/tc-aarch64.c:3198 config/tc-aarch64.c:3245
msgid "this relocation modifier is not allowed on this instruction"
msgstr ""
-#: config/tc-aarch64.c:2919 config/tc-aarch64.c:3029
+#: config/tc-aarch64.c:2957 config/tc-aarch64.c:3067
msgid "invalid relocation expression"
msgstr ""
-#: config/tc-aarch64.c:2937
+#: config/tc-aarch64.c:2975
msgid "invalid address"
msgstr ""
-#: config/tc-aarch64.c:2989
+#: config/tc-aarch64.c:3027
msgid "invalid use of 32-bit register offset"
msgstr ""
-#: config/tc-aarch64.c:2995
+#: config/tc-aarch64.c:3033
msgid "invalid use of 64-bit register offset"
msgstr ""
#. [Xn],#expr
-#: config/tc-aarch64.c:3040 config/tc-aarch64.c:3092
+#: config/tc-aarch64.c:3078 config/tc-aarch64.c:3130
msgid "invalid expression in the address"
msgstr ""
-#: config/tc-aarch64.c:3049 config/tc-arm.c:5306 config/tc-arm.c:5876
+#: config/tc-aarch64.c:3087 config/tc-arm.c:5598 config/tc-arm.c:6168
msgid "']' expected"
msgstr ""
-#: config/tc-aarch64.c:3057
+#: config/tc-aarch64.c:3095
msgid "register offset not allowed in pre-indexed addressing mode"
msgstr ""
-#: config/tc-aarch64.c:3072 config/tc-arm.c:5342
+#: config/tc-aarch64.c:3110 config/tc-arm.c:5634
msgid "cannot combine pre- and post-indexing"
msgstr ""
-#: config/tc-aarch64.c:3083
+#: config/tc-aarch64.c:3121
msgid "invalid 32-bit register offset"
msgstr ""
#. Reject [Rn]!
-#: config/tc-aarch64.c:3104
+#: config/tc-aarch64.c:3142
msgid "missing offset in the pre-indexed address"
msgstr ""
-#: config/tc-aarch64.c:3318
+#: config/tc-aarch64.c:3350
#, c-format
msgid ""
"system register name '%s' is deprecated and may be removed in a future "
"release"
msgstr ""
-#: config/tc-aarch64.c:3390
+#: config/tc-aarch64.c:3422
msgid "immediate value out of range "
msgstr ""
-#: config/tc-aarch64.c:3898
+#: config/tc-aarch64.c:3930
#, c-format
msgid "Info: "
msgstr ""
-#: config/tc-aarch64.c:3932 config/tc-score.c:2750 config/tc-score.c:6504
+#: config/tc-aarch64.c:3963 config/tc-score.c:2750 config/tc-score.c:6504
#, c-format
msgid "%s -- `%s'"
msgstr ""
-#: config/tc-aarch64.c:3934
+#: config/tc-aarch64.c:3965
#, c-format
msgid "%s at operand %d -- `%s'"
msgstr ""
-#: config/tc-aarch64.c:3938
+#: config/tc-aarch64.c:3971
#, c-format
msgid "operand %d should be %s -- `%s'"
msgstr ""
-#: config/tc-aarch64.c:3943
+#: config/tc-aarch64.c:3977
#, c-format
msgid "operand mismatch -- `%s'"
msgstr ""
#. Print the hint.
-#: config/tc-aarch64.c:4004
+#: config/tc-aarch64.c:4038
msgid " did you mean this?"
msgstr ""
-#: config/tc-aarch64.c:4007 config/tc-aarch64.c:4034
+#: config/tc-aarch64.c:4041 config/tc-aarch64.c:4068
#, c-format
msgid " %s"
msgstr ""
-#: config/tc-aarch64.c:4012
+#: config/tc-aarch64.c:4046
msgid " other valid variant(s):"
msgstr ""
-#: config/tc-aarch64.c:4042
+#: config/tc-aarch64.c:4076
#, c-format
msgid "%s out of range %d to %d at operand %d -- `%s'"
msgstr ""
-#: config/tc-aarch64.c:4043 config/tc-aarch64.c:4047 config/tc-aarch64.c:5353
+#: config/tc-aarch64.c:4077 config/tc-aarch64.c:4081 config/tc-aarch64.c:5410
msgid "immediate value"
msgstr ""
-#: config/tc-aarch64.c:4046
+#: config/tc-aarch64.c:4080
#, c-format
msgid "%s expected to be %d at operand %d -- `%s'"
msgstr ""
-#: config/tc-aarch64.c:4053
+#: config/tc-aarch64.c:4087
#, c-format
msgid ""
"invalid number of registers in the list; only 1 register is expected at "
"operand %d -- `%s'"
msgstr ""
-#: config/tc-aarch64.c:4057
+#: config/tc-aarch64.c:4091
#, c-format
msgid ""
"invalid number of registers in the list; %d registers are expected at "
"operand %d -- `%s'"
msgstr ""
-#: config/tc-aarch64.c:4063
+#: config/tc-aarch64.c:4097
#, c-format
msgid "immediate value should be a multiple of %d at operand %d -- `%s'"
msgstr ""
-#: config/tc-aarch64.c:4314
+#: config/tc-aarch64.c:4348
msgid "bad vector arrangement type"
msgstr ""
-#: config/tc-aarch64.c:4420
+#: config/tc-aarch64.c:4454
msgid "the specified relocation type is not allowed for MOVK"
msgstr ""
-#: config/tc-aarch64.c:4449 config/tc-aarch64.c:4459
+#: config/tc-aarch64.c:4483 config/tc-aarch64.c:4493
msgid "the specified relocation type is not allowed for 32-bit register"
msgstr ""
-#: config/tc-aarch64.c:4594
+#: config/tc-aarch64.c:4628
msgid "comma expected between operands"
msgstr ""
-#: config/tc-aarch64.c:4687
+#: config/tc-aarch64.c:4722
msgid "the top half of a 128-bit FP/SIMD register is expected"
msgstr ""
-#: config/tc-aarch64.c:4725 config/tc-arm.c:1813 config/tc-arm.c:1858
+#: config/tc-aarch64.c:4760 config/tc-arm.c:1828 config/tc-arm.c:1873
#: config/tc-h8300.c:1043
msgid "invalid register list"
msgstr ""
-#: config/tc-aarch64.c:4790 config/tc-aarch64.c:4811
+#: config/tc-aarch64.c:4825 config/tc-aarch64.c:4846
msgid "immediate zero expected"
msgstr ""
-#: config/tc-aarch64.c:4885
+#: config/tc-aarch64.c:4920
msgid "shift not allowed for bitmask immediate"
msgstr ""
-#: config/tc-aarch64.c:4939
+#: config/tc-aarch64.c:4974
msgid "can't mix relocation modifier with explicit shift"
msgstr ""
-#: config/tc-aarch64.c:4982
+#: config/tc-aarch64.c:5017
msgid "invalid condition"
msgstr ""
-#: config/tc-aarch64.c:5007
+#: config/tc-aarch64.c:5042
msgid "invalid pc-relative address"
msgstr ""
#. Only permit "=value" in the literal load instructions.
#. The literal will be generated by programmer_friendly_fixup.
-#: config/tc-aarch64.c:5015
+#: config/tc-aarch64.c:5050
msgid "invalid use of \"=immediate\""
msgstr ""
-#: config/tc-aarch64.c:5081
+#: config/tc-aarch64.c:5116
msgid "the optional immediate offset can only be 0"
msgstr ""
-#: config/tc-aarch64.c:5096 config/tc-aarch64.c:5114 config/tc-aarch64.c:5131
-#: config/tc-aarch64.c:5150 config/tc-aarch64.c:5165
+#: config/tc-aarch64.c:5131 config/tc-aarch64.c:5149 config/tc-aarch64.c:5166
+#: config/tc-aarch64.c:5185 config/tc-aarch64.c:5200
msgid "invalid addressing mode"
msgstr ""
-#: config/tc-aarch64.c:5136
+#: config/tc-aarch64.c:5171
msgid "relocation not allowed"
msgstr ""
-#: config/tc-aarch64.c:5175
+#: config/tc-aarch64.c:5210
msgid "writeback value should be an immediate constant"
msgstr ""
-#: config/tc-aarch64.c:5186
+#: config/tc-aarch64.c:5221
msgid "unknown or missing system register name"
msgstr ""
-#: config/tc-aarch64.c:5196
+#: config/tc-aarch64.c:5231
msgid "unknown or missing PSTATE field name"
msgstr ""
-#: config/tc-aarch64.c:5220
+#: config/tc-aarch64.c:5255
msgid "unknown or missing operation name"
msgstr ""
-#: config/tc-aarch64.c:5233
+#: config/tc-aarch64.c:5268
msgid "the specified option is not accepted in ISB"
msgstr ""
-#: config/tc-aarch64.c:5253 config/tc-aarch64.c:6305 config/tc-arm.c:6800
+#: config/tc-aarch64.c:5288 config/tc-aarch64.c:6346 config/tc-arm.c:7111
#, c-format
msgid "unhandled operand code %d"
msgstr ""
-#: config/tc-aarch64.c:5284
+#: config/tc-aarch64.c:5330
msgid "unexpected comma before the omitted optional operand"
msgstr ""
-#: config/tc-aarch64.c:5301
+#: config/tc-aarch64.c:5358
msgid "unexpected characters following instruction"
msgstr ""
-#: config/tc-aarch64.c:5379 config/tc-arm.c:4905 config/tc-arm.c:5441
-#: config/tc-arm.c:7318
+#: config/tc-aarch64.c:5436 config/tc-arm.c:5195 config/tc-arm.c:5733
+#: config/tc-arm.c:7767
msgid "constant expression expected"
msgstr ""
-#: config/tc-aarch64.c:5386 config/tc-arm.c:7359
+#: config/tc-aarch64.c:5443
msgid "literal pool insertion failed"
msgstr ""
-#: config/tc-aarch64.c:5504
+#: config/tc-aarch64.c:5561
#, c-format
msgid "unknown mnemonic `%s' -- `%s'"
msgstr ""
-#: config/tc-aarch64.c:5512
+#: config/tc-aarch64.c:5569
#, c-format
msgid "unexpected comma after the mnemonic name `%s' -- `%s'"
msgstr ""
-#: config/tc-aarch64.c:5562
+#: config/tc-aarch64.c:5619
#, c-format
msgid "selected processor does not support `%s'"
msgstr ""
-#: config/tc-aarch64.c:5836
-#, c-format
-msgid "alignments greater than %d bytes not supported in .text sections"
-msgstr ""
-
-#: config/tc-aarch64.c:5969 config/tc-arm.c:21185
+#: config/tc-aarch64.c:6010 config/tc-arm.c:21571
msgid "GOT already in the symbol table"
msgstr ""
-#: config/tc-aarch64.c:6131
+#: config/tc-aarch64.c:6172
msgid "immediate cannot be moved by a single instruction"
msgstr ""
-#: config/tc-aarch64.c:6174 config/tc-aarch64.c:6219 config/tc-aarch64.c:6245
-#: config/tc-arm.c:14422 config/tc-arm.c:14449 config/tc-arm.c:14993
-#: config/tc-arm.c:15474 config/tc-metag.c:2444 config/tc-metag.c:2453
+#: config/tc-aarch64.c:6215 config/tc-aarch64.c:6260 config/tc-aarch64.c:6286
+#: config/tc-arm.c:14789 config/tc-arm.c:14816 config/tc-arm.c:15360
+#: config/tc-arm.c:15841 config/tc-metag.c:2444 config/tc-metag.c:2453
#: config/tc-metag.c:2492 config/tc-metag.c:2501 config/tc-metag.c:3020
#: config/tc-metag.c:3029
msgid "immediate out of range"
msgstr ""
-#: config/tc-aarch64.c:6238 config/tc-metag.c:4655 config/tc-xtensa.c:4111
+#: config/tc-aarch64.c:6279 config/tc-metag.c:4655 config/tc-xtensa.c:4133
msgid "invalid immediate"
msgstr ""
-#: config/tc-aarch64.c:6300 config/tc-tic6x.c:3864 config/tc-tic6x.c:3929
+#: config/tc-aarch64.c:6341 config/tc-tic6x.c:3864 config/tc-tic6x.c:3929
#: config/tc-tic6x.c:3956 config/tc-tic6x.c:3984
msgid "immediate offset out of range"
msgstr ""
-#: config/tc-aarch64.c:6374 config/tc-arm.c:21523 config/tc-arm.c:21574
-#: config/tc-arm.c:21855
+#: config/tc-aarch64.c:6415 config/tc-arm.c:21909 config/tc-arm.c:21960
+#: config/tc-arm.c:22241
#, c-format
msgid "undefined symbol %s used as an immediate value"
msgstr ""
-#: config/tc-aarch64.c:6386
+#: config/tc-aarch64.c:6427
msgid "pc-relative load offset not word aligned"
msgstr ""
-#: config/tc-aarch64.c:6389
+#: config/tc-aarch64.c:6430
msgid "pc-relative load offset out of range"
msgstr ""
-#: config/tc-aarch64.c:6401
+#: config/tc-aarch64.c:6442
msgid "pc-relative address offset out of range"
msgstr ""
-#: config/tc-aarch64.c:6413 config/tc-aarch64.c:6428
+#: config/tc-aarch64.c:6454 config/tc-aarch64.c:6469
msgid "conditional branch target not word aligned"
msgstr ""
-#: config/tc-aarch64.c:6416 config/tc-aarch64.c:6431 config/tc-arm.c:22118
+#: config/tc-aarch64.c:6457 config/tc-aarch64.c:6472 config/tc-arm.c:22504
msgid "conditional branch out of range"
msgstr ""
-#: config/tc-aarch64.c:6444
+#: config/tc-aarch64.c:6485
msgid "branch target not word aligned"
msgstr ""
-#: config/tc-aarch64.c:6447 config/tc-arm.c:753 config/tc-mips.c:14494
+#: config/tc-aarch64.c:6488 config/tc-arm.c:758 config/tc-mips.c:15081
msgid "branch out of range"
msgstr ""
-#: config/tc-aarch64.c:6481 config/tc-arm.c:21746 config/tc-arm.c:21761
-#: config/tc-arm.c:21776 config/tc-arm.c:21787 config/tc-arm.c:21810
-#: config/tc-arm.c:22522 config/tc-moxie.c:710 config/tc-pj.c:448
-#: config/tc-sh.c:4291
+#: config/tc-aarch64.c:6522 config/tc-arm.c:22132 config/tc-arm.c:22147
+#: config/tc-arm.c:22162 config/tc-arm.c:22173 config/tc-arm.c:22196
+#: config/tc-arm.c:22903 config/tc-moxie.c:708 config/tc-pj.c:448
+#: config/tc-sh.c:4290
msgid "offset out of range"
msgstr ""
-#: config/tc-aarch64.c:6494
+#: config/tc-aarch64.c:6535
msgid "unsigned value out of range"
msgstr ""
-#: config/tc-aarch64.c:6502
+#: config/tc-aarch64.c:6543
msgid "signed value out of range"
msgstr ""
-#: config/tc-aarch64.c:6610
+#: config/tc-aarch64.c:6655
#, c-format
msgid "unexpected %s fixup"
msgstr ""
-#: config/tc-aarch64.c:6676 config/tc-arm.c:22958 config/tc-arm.c:22979
-#: config/tc-mips.c:16546 config/tc-score.c:7480
+#: config/tc-aarch64.c:6721 config/tc-arm.c:23339 config/tc-arm.c:23360
+#: config/tc-mips.c:17189 config/tc-score.c:7480
#, c-format
msgid "cannot represent %s relocation in this object file format"
msgstr ""
-#: config/tc-aarch64.c:6709
+#: config/tc-aarch64.c:6754
#, c-format
msgid "cannot do %u-byte relocation"
msgstr ""
-#: config/tc-aarch64.c:6967 config/tc-arc.c:212 config/tc-arm.c:23434
+#: config/tc-aarch64.c:7012 config/tc-arc.c:211 config/tc-arm.c:23815
#: config/tc-score.c:6299 config/tc-score.c:6528 config/tc-score.c:6533
msgid "virtual memory exhausted"
msgstr ""
-#: config/tc-aarch64.c:7114 config/tc-arm.c:23759
+#: config/tc-aarch64.c:7159 config/tc-arm.c:24140
msgid "assemble for big-endian"
msgstr ""
-#: config/tc-aarch64.c:7115 config/tc-arm.c:23760
+#: config/tc-aarch64.c:7160 config/tc-arm.c:24141
msgid "assemble for little-endian"
msgstr ""
-#: config/tc-aarch64.c:7118
+#: config/tc-aarch64.c:7163
msgid "temporary switch for dumping"
msgstr ""
-#: config/tc-aarch64.c:7120
+#: config/tc-aarch64.c:7165
msgid "output verbose error messages"
msgstr ""
-#: config/tc-aarch64.c:7210 config/tc-arm.c:24261
+#: config/tc-aarch64.c:7167
+msgid "do not output verbose error messages"
+msgstr ""
+
+#: config/tc-aarch64.c:7259 config/tc-arm.c:24644
msgid "invalid architectural extension"
msgstr ""
-#: config/tc-aarch64.c:7235 config/tc-arm.c:24293
+#: config/tc-aarch64.c:7284 config/tc-arm.c:24676
msgid "must specify extensions to add before specifying those to remove"
msgstr ""
-#: config/tc-aarch64.c:7243 config/tc-arm.c:24301
+#: config/tc-aarch64.c:7292 config/tc-arm.c:24684
msgid "missing architectural extension"
msgstr ""
-#: config/tc-aarch64.c:7262 config/tc-arm.c:24338
+#: config/tc-aarch64.c:7311 config/tc-arm.c:24721
#, c-format
msgid "unknown architectural extension `%s'"
msgstr ""
-#: config/tc-aarch64.c:7286 config/tc-arm.c:24372 config/tc-metag.c:5833
+#: config/tc-aarch64.c:7335 config/tc-arm.c:24755 config/tc-metag.c:5833
#, c-format
msgid "missing cpu name `%s'"
msgstr ""
-#: config/tc-aarch64.c:7300 config/tc-aarch64.c:7519 config/tc-arm.c:24398
-#: config/tc-arm.c:24939 config/tc-metag.c:5844
+#: config/tc-aarch64.c:7349 config/tc-aarch64.c:7568 config/tc-arm.c:24781
+#: config/tc-arm.c:25335 config/tc-metag.c:5844
#, c-format
msgid "unknown cpu `%s'"
msgstr ""
-#: config/tc-aarch64.c:7318 config/tc-arm.c:24416
+#: config/tc-aarch64.c:7367 config/tc-arm.c:24799
#, c-format
msgid "missing architecture name `%s'"
msgstr ""
-#: config/tc-aarch64.c:7332 config/tc-aarch64.c:7566 config/tc-arm.c:24433
-#: config/tc-arm.c:24973 config/tc-arm.c:25004 config/tc-score.c:7715
+#: config/tc-aarch64.c:7381 config/tc-aarch64.c:7615 config/tc-arm.c:24816
+#: config/tc-arm.c:25369 config/tc-arm.c:25400 config/tc-score.c:7715
#, c-format
msgid "unknown architecture `%s'\n"
msgstr ""
-#: config/tc-aarch64.c:7357
+#: config/tc-aarch64.c:7406
#, c-format
msgid "missing abi name `%s'"
msgstr ""
-#: config/tc-aarch64.c:7368
+#: config/tc-aarch64.c:7417
#, c-format
msgid "unknown abi `%s'\n"
msgstr ""
-#: config/tc-aarch64.c:7374
+#: config/tc-aarch64.c:7423
msgid "<abi name>\t specify for ABI <abi name>"
msgstr ""
-#: config/tc-aarch64.c:7377 config/tc-arm.c:24511 config/tc-metag.c:5910
+#: config/tc-aarch64.c:7426 config/tc-arm.c:24903 config/tc-metag.c:5910
msgid "<cpu name>\t assemble for CPU <cpu name>"
msgstr ""
-#: config/tc-aarch64.c:7379 config/tc-arm.c:24513
+#: config/tc-aarch64.c:7428 config/tc-arm.c:24905
msgid "<arch name>\t assemble for architecture <arch name>"
msgstr ""
-#: config/tc-aarch64.c:7418 config/tc-aarch64.c:7438 config/tc-arm.c:24567
-#: config/tc-arm.c:24585 config/tc-arm.c:24605 config/tc-metag.c:5935
+#: config/tc-aarch64.c:7467 config/tc-aarch64.c:7487 config/tc-arm.c:24961
+#: config/tc-arm.c:24979 config/tc-arm.c:24999 config/tc-metag.c:5935
#, c-format
msgid "option `-%c%s' is deprecated: %s"
msgstr ""
-#: config/tc-aarch64.c:7458
+#: config/tc-aarch64.c:7507
#, c-format
msgid " AArch64-specific assembler options:\n"
msgstr ""
-#: config/tc-aarch64.c:7469 config/tc-arm.c:24636
+#: config/tc-aarch64.c:7518 config/tc-arm.c:25030
#, c-format
msgid " -EB assemble code for a big-endian cpu\n"
msgstr ""
-#: config/tc-aarch64.c:7474 config/tc-arm.c:24641
+#: config/tc-aarch64.c:7523 config/tc-arm.c:25035
#, c-format
msgid " -EL assemble code for a little-endian cpu\n"
msgstr ""
-#: config/tc-alpha.c:655
+#: config/tc-alpha.c:653
#, c-format
msgid "No !literal!%ld was found"
msgstr ""
-#: config/tc-alpha.c:662
+#: config/tc-alpha.c:660
#, c-format
msgid "No !tlsgd!%ld was found"
msgstr ""
-#: config/tc-alpha.c:669
+#: config/tc-alpha.c:667
#, c-format
msgid "No !tlsldm!%ld was found"
msgstr ""
-#: config/tc-alpha.c:678
+#: config/tc-alpha.c:676
#, c-format
msgid "No ldah !gpdisp!%ld was found"
msgstr ""
-#: config/tc-alpha.c:728
+#: config/tc-alpha.c:726
#, c-format
msgid "too many !literal!%ld for %s"
msgstr ""
-#: config/tc-alpha.c:758
+#: config/tc-alpha.c:756
#, c-format
msgid "No lda !gpdisp!%ld was found"
msgstr ""
#. Only support one relocation op per insn.
-#: config/tc-alpha.c:917
+#: config/tc-alpha.c:915
msgid "More than one relocation op per insn"
msgstr ""
-#: config/tc-alpha.c:933
+#: config/tc-alpha.c:931
msgid "No relocation operand"
msgstr ""
-#: config/tc-alpha.c:943
+#: config/tc-alpha.c:941
#, c-format
msgid "Unknown relocation operand: !%s"
msgstr ""
-#: config/tc-alpha.c:953
+#: config/tc-alpha.c:951
#, c-format
msgid "no sequence number after !%s"
msgstr ""
-#: config/tc-alpha.c:963
+#: config/tc-alpha.c:961
#, c-format
msgid "!%s does not use a sequence number"
msgstr ""
-#: config/tc-alpha.c:973
+#: config/tc-alpha.c:971
#, c-format
msgid "Bad sequence number: !%s!%s"
msgstr ""
-#: config/tc-alpha.c:1188 config/tc-alpha.c:3361
+#: config/tc-alpha.c:1186 config/tc-alpha.c:3359
#, c-format
msgid "inappropriate arguments for opcode `%s'"
msgstr ""
-#: config/tc-alpha.c:1190 config/tc-alpha.c:3363
+#: config/tc-alpha.c:1188 config/tc-alpha.c:3361
#, c-format
msgid "opcode `%s' not supported for target %s"
msgstr ""
-#: config/tc-alpha.c:1194 config/tc-alpha.c:3367 config/tc-avr.c:1440
-#: config/tc-msp430.c:3521
+#: config/tc-alpha.c:1192 config/tc-alpha.c:3365 config/tc-avr.c:1672
+#: config/tc-msp430.c:3196
#, c-format
msgid "unknown opcode `%s'"
msgstr ""
-#: config/tc-alpha.c:1275 config/tc-alpha.c:1534
+#: config/tc-alpha.c:1273 config/tc-alpha.c:1532
msgid "overflow in literal (.lita) table"
msgstr ""
-#: config/tc-alpha.c:1282 config/tc-alpha.c:1306 config/tc-alpha.c:1547
-#: config/tc-alpha.c:2234 config/tc-alpha.c:2279 config/tc-alpha.c:2348
-#: config/tc-alpha.c:2431 config/tc-alpha.c:2656 config/tc-alpha.c:2754
+#: config/tc-alpha.c:1280 config/tc-alpha.c:1304 config/tc-alpha.c:1545
+#: config/tc-alpha.c:2232 config/tc-alpha.c:2277 config/tc-alpha.c:2346
+#: config/tc-alpha.c:2429 config/tc-alpha.c:2654 config/tc-alpha.c:2752
msgid "macro requires $at register while noat in effect"
msgstr ""
-#: config/tc-alpha.c:1284 config/tc-alpha.c:1308 config/tc-alpha.c:1549
+#: config/tc-alpha.c:1282 config/tc-alpha.c:1306 config/tc-alpha.c:1547
msgid "macro requires $at while $at in use"
msgstr ""
-#: config/tc-alpha.c:1493
+#: config/tc-alpha.c:1491
msgid "bignum invalid; zero assumed"
msgstr ""
-#: config/tc-alpha.c:1495
+#: config/tc-alpha.c:1493
msgid "floating point number invalid; zero assumed"
msgstr ""
-#: config/tc-alpha.c:1500
+#: config/tc-alpha.c:1498
msgid "can't handle expression"
msgstr ""
-#: config/tc-alpha.c:1540
+#: config/tc-alpha.c:1538
msgid "overflow in literal (.lit8) table"
msgstr ""
-#: config/tc-alpha.c:1837
+#: config/tc-alpha.c:1835
#, c-format
msgid "too many ldah insns for !gpdisp!%ld"
msgstr ""
-#: config/tc-alpha.c:1839 config/tc-alpha.c:1851
+#: config/tc-alpha.c:1837 config/tc-alpha.c:1849
#, c-format
msgid "both insns for !gpdisp!%ld must be in the same section"
msgstr ""
-#: config/tc-alpha.c:1849
+#: config/tc-alpha.c:1847
#, c-format
msgid "too many lda insns for !gpdisp!%ld"
msgstr ""
-#: config/tc-alpha.c:1905
+#: config/tc-alpha.c:1903
#, c-format
msgid "too many lituse insns for !lituse_tlsgd!%ld"
msgstr ""
-#: config/tc-alpha.c:1908
+#: config/tc-alpha.c:1906
#, c-format
msgid "too many lituse insns for !lituse_tlsldm!%ld"
msgstr ""
-#: config/tc-alpha.c:1925
+#: config/tc-alpha.c:1923
#, c-format
msgid "duplicate !tlsgd!%ld"
msgstr ""
-#: config/tc-alpha.c:1927
+#: config/tc-alpha.c:1925
#, c-format
msgid "sequence number in use for !tlsldm!%ld"
msgstr ""
-#: config/tc-alpha.c:1941
+#: config/tc-alpha.c:1939
#, c-format
msgid "duplicate !tlsldm!%ld"
msgstr ""
-#: config/tc-alpha.c:1943
+#: config/tc-alpha.c:1941
#, c-format
msgid "sequence number in use for !tlsgd!%ld"
msgstr ""
-#: config/tc-alpha.c:1998 config/tc-arc.c:292 config/tc-mn10200.c:857
-#: config/tc-mn10300.c:1150 config/tc-ppc.c:1820 config/tc-s390.c:650
+#: config/tc-alpha.c:1996 config/tc-arc.c:291 config/tc-mn10200.c:857
+#: config/tc-mn10300.c:1150 config/tc-ppc.c:1838 config/tc-s390.c:649
#: config/tc-tilegx.c:427 config/tc-tilegx.c:476 config/tc-tilepro.c:383
msgid "operand"
msgstr ""
-#: config/tc-alpha.c:2137
+#: config/tc-alpha.c:2135
msgid "invalid relocation for instruction"
msgstr ""
-#: config/tc-alpha.c:2151
+#: config/tc-alpha.c:2149
msgid "invalid relocation for field"
msgstr ""
-#: config/tc-alpha.c:2982
+#: config/tc-alpha.c:2980
msgid "can not resolve expression"
msgstr ""
-#: config/tc-alpha.c:3516 config/tc-i370.c:1055 config/tc-microblaze.c:199
-#: config/tc-ppc.c:2156 config/tc-ppc.c:5264
+#: config/tc-alpha.c:3514 config/tc-i370.c:1054 config/tc-microblaze.c:199
+#: config/tc-ppc.c:2161 config/tc-ppc.c:5272
#, c-format
msgid ".COMMon length (%ld.) <0! Ignored."
msgstr ""
-#: config/tc-alpha.c:3527 config/tc-ia64.c:1104 config/tc-sparc.c:4064
-#: config/tc-v850.c:307
+#: config/tc-alpha.c:3525 config/tc-ia64.c:1104 config/tc-sparc.c:4147
+#: config/tc-v850.c:304
msgid "Ignoring attempt to re-define symbol"
msgstr ""
-#: config/tc-alpha.c:3619 config/tc-sparc.c:4072
+#: config/tc-alpha.c:3617 config/tc-sparc.c:4155
#, c-format
msgid "Length of .comm \"%s\" is already %ld. Not changed to %ld."
msgstr ""
-#: config/tc-alpha.c:3722 ecoff.c:3063
+#: config/tc-alpha.c:3720 ecoff.c:3061
msgid ".ent directive has no name"
msgstr ""
-#: config/tc-alpha.c:3730
+#: config/tc-alpha.c:3728
msgid "nested .ent directives"
msgstr ""
-#: config/tc-alpha.c:3775 ecoff.c:3014
+#: config/tc-alpha.c:3773 ecoff.c:3012
msgid ".end directive has no name"
msgstr ""
-#: config/tc-alpha.c:3784
+#: config/tc-alpha.c:3782
msgid ".end directive without matching .ent"
msgstr ""
-#: config/tc-alpha.c:3786
+#: config/tc-alpha.c:3784
msgid ".end directive names different symbol than .ent"
msgstr ""
-#: config/tc-alpha.c:3829 ecoff.c:3149
+#: config/tc-alpha.c:3827 ecoff.c:3147
msgid ".fmask outside of .ent"
msgstr ""
-#: config/tc-alpha.c:3831 config/tc-score.c:5598 ecoff.c:3213
+#: config/tc-alpha.c:3829 config/tc-score.c:5598 ecoff.c:3211
msgid ".mask outside of .ent"
msgstr ""
-#: config/tc-alpha.c:3839 ecoff.c:3156
+#: config/tc-alpha.c:3837 ecoff.c:3154
msgid "bad .fmask directive"
msgstr ""
-#: config/tc-alpha.c:3841 ecoff.c:3220
+#: config/tc-alpha.c:3839 ecoff.c:3218
msgid "bad .mask directive"
msgstr ""
-#: config/tc-alpha.c:3874 config/tc-mips.c:17705 config/tc-score.c:5740
-#: ecoff.c:3177
+#: config/tc-alpha.c:3872 config/tc-mips.c:18449 config/tc-score.c:5740
+#: ecoff.c:3175
msgid ".frame outside of .ent"
msgstr ""
-#: config/tc-alpha.c:3885 config/tc-mips.c:17716 ecoff.c:3188
+#: config/tc-alpha.c:3883 config/tc-mips.c:18460 ecoff.c:3186
msgid "bad .frame directive"
msgstr ""
-#: config/tc-alpha.c:3919
+#: config/tc-alpha.c:3917
msgid ".prologue directive without a preceding .ent directive"
msgstr ""
-#: config/tc-alpha.c:3937
+#: config/tc-alpha.c:3935
#, c-format
msgid "Invalid argument %d to .prologue."
msgstr ""
-#: config/tc-alpha.c:4028
+#: config/tc-alpha.c:4026
msgid "ECOFF debugging is disabled."
msgstr ""
-#: config/tc-alpha.c:4042
+#: config/tc-alpha.c:4040
msgid ".ent directive without matching .end"
msgstr ""
-#: config/tc-alpha.c:4135
+#: config/tc-alpha.c:4133
msgid ".usepv directive has no name"
msgstr ""
-#: config/tc-alpha.c:4146
+#: config/tc-alpha.c:4144
msgid ".usepv directive has no type"
msgstr ""
-#: config/tc-alpha.c:4161
+#: config/tc-alpha.c:4159
msgid "unknown argument for .usepv"
msgstr ""
-#: config/tc-alpha.c:4276
+#: config/tc-alpha.c:4274
#, c-format
msgid "unknown section attribute %s"
msgstr ""
-#: config/tc-alpha.c:4370
+#: config/tc-alpha.c:4368
msgid "previous .ent not closed by a .end"
msgstr ""
-#: config/tc-alpha.c:4391
+#: config/tc-alpha.c:4389
msgid ".ent directive has no symbol"
msgstr ""
-#: config/tc-alpha.c:4416
+#: config/tc-alpha.c:4414
msgid ".handler directive has no name"
msgstr ""
-#: config/tc-alpha.c:4446
+#: config/tc-alpha.c:4444
msgid "Bad .frame directive 1./2. param"
msgstr ""
-#: config/tc-alpha.c:4456
+#: config/tc-alpha.c:4454
#, c-format
msgid "Bad RA (%d) register for .frame"
msgstr ""
-#: config/tc-alpha.c:4461
+#: config/tc-alpha.c:4459
msgid "Bad .frame directive 3./4. param"
msgstr ""
-#: config/tc-alpha.c:4497
+#: config/tc-alpha.c:4495
msgid ".pdesc directive not in link (.link) section"
msgstr ""
-#: config/tc-alpha.c:4504
+#: config/tc-alpha.c:4502
msgid ".pdesc directive has no entry symbol"
msgstr ""
-#: config/tc-alpha.c:4515
+#: config/tc-alpha.c:4513
msgid ".pdesc has a bad entry symbol"
msgstr ""
-#: config/tc-alpha.c:4526
+#: config/tc-alpha.c:4524
msgid ".pdesc doesn't match with last .ent"
msgstr ""
-#: config/tc-alpha.c:4541
+#: config/tc-alpha.c:4539
msgid "No comma after .pdesc <entryname>"
msgstr ""
-#: config/tc-alpha.c:4561
+#: config/tc-alpha.c:4559
msgid "unknown procedure kind"
msgstr ""
-#: config/tc-alpha.c:4656
+#: config/tc-alpha.c:4654
msgid ".name directive not in link (.link) section"
msgstr ""
-#: config/tc-alpha.c:4664
+#: config/tc-alpha.c:4662
msgid ".name directive has no symbol"
msgstr ""
-#: config/tc-alpha.c:4698
+#: config/tc-alpha.c:4696
msgid "No symbol after .linkage"
msgstr ""
-#: config/tc-alpha.c:4746
+#: config/tc-alpha.c:4744
msgid "No symbol after .code_address"
msgstr ""
-#: config/tc-alpha.c:4772 config/tc-score.c:5604
+#: config/tc-alpha.c:4770 config/tc-score.c:5604
msgid "Bad .mask directive"
msgstr ""
-#: config/tc-alpha.c:4790
+#: config/tc-alpha.c:4788
msgid "Bad .fmask directive"
msgstr ""
-#: config/tc-alpha.c:4947
+#: config/tc-alpha.c:4945
#, c-format
msgid "Expected comma after name \"%s\""
msgstr ""
-#: config/tc-alpha.c:4959
+#: config/tc-alpha.c:4957
#, c-format
msgid "unhandled: .proc %s,%d"
msgstr ""
-#: config/tc-alpha.c:4993
+#: config/tc-alpha.c:4991
#, c-format
msgid "Tried to .set unrecognized mode `%s'"
msgstr ""
-#: config/tc-alpha.c:5019
+#: config/tc-alpha.c:5017
#, c-format
msgid "Bad base register, using $%d."
msgstr ""
-#: config/tc-alpha.c:5040 config/tc-nios2.c:385 config/tc-nios2.c:500
+#: config/tc-alpha.c:5038 config/tc-nios2.c:337 config/tc-nios2.c:452
#, c-format
msgid "Alignment too large: %d. assumed"
msgstr ""
-#: config/tc-alpha.c:5044 config/tc-d30v.c:2060 config/tc-nios2.c:389
-#: config/tc-nios2.c:504
+#: config/tc-alpha.c:5042 config/tc-d30v.c:2057 config/tc-nios2.c:341
+#: config/tc-nios2.c:456
msgid "Alignment negative: 0 assumed"
msgstr ""
-#: config/tc-alpha.c:5139 config/tc-alpha.c:5631
+#: config/tc-alpha.c:5137 config/tc-alpha.c:5629
#, c-format
msgid "Unknown CPU identifier `%s'"
msgstr ""
-#: config/tc-alpha.c:5330
+#: config/tc-alpha.c:5328
#, c-format
msgid "Chose GP value of %lx\n"
msgstr ""
-#: config/tc-alpha.c:5344
+#: config/tc-alpha.c:5342
msgid "bad .section directive: want a,s,w,x,M,S,G,T in string"
msgstr ""
-#: config/tc-alpha.c:5433
+#: config/tc-alpha.c:5431
#, c-format
msgid "internal error: can't hash opcode `%s': %s"
msgstr ""
-#: config/tc-alpha.c:5469
+#: config/tc-alpha.c:5467
#, c-format
msgid "internal error: can't hash macro `%s': %s"
msgstr ""
-#: config/tc-alpha.c:5553 config/tc-arm.c:6871 config/tc-arm.c:6883
-#: config/tc-i960.c:708 config/tc-xtensa.c:5315 config/tc-xtensa.c:5393
-#: config/tc-xtensa.c:5510 config/tc-z80.c:1927
+#: config/tc-alpha.c:5551 config/tc-arm.c:7182 config/tc-arm.c:7194
+#: config/tc-i960.c:705 config/tc-xtensa.c:5337 config/tc-xtensa.c:5415
+#: config/tc-xtensa.c:5532 config/tc-z80.c:1927
msgid "syntax error"
msgstr ""
-#: config/tc-alpha.c:5682
+#: config/tc-alpha.c:5680
msgid ""
"Alpha options:\n"
"-32addr\t\t\ttreat addresses as 32-bit values\n"
@@ -2327,7 +2353,7 @@ msgid ""
"\t\t\tthese variants include PALcode opcodes\n"
msgstr ""
-#: config/tc-alpha.c:5692
+#: config/tc-alpha.c:5690
msgid ""
"VMS options:\n"
"-+\t\t\tencode (don't truncate) names longer than 64 characters\n"
@@ -2335,963 +2361,1008 @@ msgid ""
"-replace/-noreplace\tenable or disable the optimization of procedure calls\n"
msgstr ""
-#: config/tc-alpha.c:5943
+#: config/tc-alpha.c:5941
#, c-format
msgid "unhandled relocation type %s"
msgstr ""
-#: config/tc-alpha.c:5956
+#: config/tc-alpha.c:5954
msgid "non-absolute expression in constant field"
msgstr ""
-#: config/tc-alpha.c:5970
+#: config/tc-alpha.c:5968
#, c-format
msgid "type %d reloc done?\n"
msgstr ""
-#: config/tc-alpha.c:6017 config/tc-alpha.c:6024
+#: config/tc-alpha.c:6015 config/tc-alpha.c:6022
msgid "Used $at without \".set noat\""
msgstr ""
-#: config/tc-alpha.c:6193
+#: config/tc-alpha.c:6191
#, c-format
msgid "!samegp reloc against symbol without .prologue: %s"
msgstr ""
-#: config/tc-alpha.c:6237 config/tc-tilegx.c:1751 config/tc-tilepro.c:1531
-#: config/tc-xtensa.c:5999
+#: config/tc-alpha.c:6235 config/tc-tilegx.c:1751 config/tc-tilepro.c:1531
+#: config/tc-xtensa.c:6025
#, c-format
msgid "cannot represent `%s' relocation in object file"
msgstr ""
-#: config/tc-alpha.c:6243
+#: config/tc-alpha.c:6241
#, c-format
msgid "internal error? cannot generate `%s' relocation"
msgstr ""
-#: config/tc-alpha.c:6342
+#: config/tc-alpha.c:6340
#, c-format
msgid "frame reg expected, using $%d."
msgstr ""
-#: config/tc-arc.c:194 config/tc-arc.c:215 config/tc-arc.c:992
+#: config/tc-arc.c:193 config/tc-arc.c:214 config/tc-arc.c:991
#: config/tc-h8300.c:75 config/tc-h8300.c:84 config/tc-h8300.c:94
#: config/tc-h8300.c:104 config/tc-h8300.c:114 config/tc-h8300.c:125
-#: config/tc-h8300.c:242 config/tc-hppa.c:6898 config/tc-hppa.c:6904
-#: config/tc-hppa.c:6910 config/tc-hppa.c:6916 config/tc-hppa.c:8323
-#: config/tc-lm32.c:197 config/tc-mips.c:3342 config/tc-mn10300.c:939
-#: config/tc-mn10300.c:944 config/tc-mn10300.c:2441 config/tc-xc16x.c:79
-#: config/tc-xc16x.c:86 config/tc-xc16x.c:93
+#: config/tc-h8300.c:242 config/tc-hppa.c:6892 config/tc-hppa.c:6898
+#: config/tc-hppa.c:6904 config/tc-hppa.c:6910 config/tc-hppa.c:8317
+#: config/tc-lm32.c:197 config/tc-mips.c:3471 config/tc-mips.c:3977
+#: config/tc-mn10300.c:938 config/tc-mn10300.c:943 config/tc-mn10300.c:2441
+#: config/tc-xc16x.c:79 config/tc-xc16x.c:86 config/tc-xc16x.c:93
msgid "could not set architecture and machine"
msgstr ""
-#: config/tc-arc.c:432 config/tc-arc.c:671
+#: config/tc-arc.c:431 config/tc-arc.c:670
msgid "expected comma after operand name"
msgstr ""
-#: config/tc-arc.c:443
+#: config/tc-arc.c:442
#, c-format
msgid "negative operand number %d"
msgstr ""
-#: config/tc-arc.c:455
+#: config/tc-arc.c:454
msgid "expected comma after register-number"
msgstr ""
-#: config/tc-arc.c:480
+#: config/tc-arc.c:479
msgid "invalid mode"
msgstr ""
-#: config/tc-arc.c:497
+#: config/tc-arc.c:496
msgid "expected comma after register-mode"
msgstr ""
-#: config/tc-arc.c:514
+#: config/tc-arc.c:513
msgid "shortcut designator invalid"
msgstr ""
-#: config/tc-arc.c:529
+#: config/tc-arc.c:528
#, c-format
msgid "core register value (%d) too large"
msgstr ""
-#: config/tc-arc.c:537
+#: config/tc-arc.c:536
#, c-format
msgid "condition code value (%d) too large"
msgstr ""
-#: config/tc-arc.c:555
+#: config/tc-arc.c:554
#, c-format
msgid "attempt to override symbol: %s"
msgstr ""
-#: config/tc-arc.c:626
+#: config/tc-arc.c:625
msgid "invalid opertype"
msgstr ""
-#: config/tc-arc.c:683
+#: config/tc-arc.c:682
msgid "expected comma after opcode"
msgstr ""
-#: config/tc-arc.c:693
+#: config/tc-arc.c:692
#, c-format
msgid "negative subopcode %d"
msgstr ""
-#: config/tc-arc.c:702
+#: config/tc-arc.c:701
msgid "subcode value found when opcode not equal 0x03"
msgstr ""
-#: config/tc-arc.c:710
+#: config/tc-arc.c:709
#, c-format
msgid "invalid subopcode %d"
msgstr ""
-#: config/tc-arc.c:721
+#: config/tc-arc.c:720
msgid "expected comma after subopcode"
msgstr ""
-#: config/tc-arc.c:740
+#: config/tc-arc.c:739
msgid "invalid suffix class"
msgstr ""
-#: config/tc-arc.c:749
+#: config/tc-arc.c:748
msgid "expected comma after suffix class"
msgstr ""
-#: config/tc-arc.c:768
+#: config/tc-arc.c:767
msgid "invalid syntax class"
msgstr ""
-#: config/tc-arc.c:775
+#: config/tc-arc.c:774
msgid "opcode 0x3 and SYNTAX_3OP invalid"
msgstr ""
-#: config/tc-arc.c:795
+#: config/tc-arc.c:794
msgid "unknown suffix class"
msgstr ""
-#: config/tc-arc.c:862 config/tc-tic6x.c:581
+#: config/tc-arc.c:861 config/tc-tic6x.c:582
msgid "expected comma after symbol name"
msgstr ""
-#: config/tc-arc.c:872
+#: config/tc-arc.c:871
msgid "negative symbol length"
msgstr ""
-#: config/tc-arc.c:883
+#: config/tc-arc.c:882
msgid "ignoring attempt to re-define symbol"
msgstr ""
-#: config/tc-arc.c:890
+#: config/tc-arc.c:889
#, c-format
msgid "length of symbol \"%s\" already %ld, ignoring %d"
msgstr ""
-#: config/tc-arc.c:904
+#: config/tc-arc.c:903
msgid "assuming symbol alignment of zero"
msgstr ""
-#: config/tc-arc.c:971
+#: config/tc-arc.c:970
msgid "\".option\" directive must appear before any instructions"
msgstr ""
-#: config/tc-arc.c:981
+#: config/tc-arc.c:980
msgid "\".option\" directive conflicts with initial definition"
msgstr ""
-#: config/tc-arc.c:989
+#: config/tc-arc.c:988
msgid "\".option\" directive overrides command-line (default) value"
msgstr ""
-#: config/tc-arc.c:999
+#: config/tc-arc.c:998
msgid "invalid identifier for \".option\""
msgstr ""
-#: config/tc-arc.c:1037 config/tc-i860.c:1035 config/tc-ip2k.c:249
+#: config/tc-arc.c:1036 config/tc-i860.c:1034 config/tc-ip2k.c:248
msgid "relaxation not supported\n"
msgstr ""
-#: config/tc-arc.c:1081
+#: config/tc-arc.c:1080
msgid "expression too complex code symbol"
msgstr ""
-#: config/tc-arc.c:1108
+#: config/tc-arc.c:1107
#, c-format
msgid "missing ')' in %%-op"
msgstr ""
-#: config/tc-arc.c:1364 config/tc-dlx.c:1206 config/tc-i960.c:2639
-#: config/tc-m32r.c:2281 config/tc-nds32.c:5825 config/tc-sparc.c:3751
+#: config/tc-arc.c:1365 config/tc-dlx.c:1198 config/tc-i960.c:2636
+#: config/tc-m32r.c:2280 config/tc-nds32.c:6503 config/tc-sparc.c:3834
#, c-format
msgid "internal error: can't export reloc type %d (`%s')"
msgstr ""
-#: config/tc-arc.c:1496
+#: config/tc-arc.c:1497
#, c-format
msgid "unknown syntax format character `%c'"
msgstr ""
-#: config/tc-arc.c:1635
+#: config/tc-arc.c:1636
msgid "too many suffixes"
msgstr ""
-#: config/tc-arc.c:1674
+#: config/tc-arc.c:1675
msgid "symbol as destination register"
msgstr ""
#. xgettext:c-format.
-#: config/tc-arc.c:1759 config/tc-i370.c:2207 config/tc-mn10200.c:1142
-#: config/tc-mn10300.c:1822 config/tc-ppc.c:3355 config/tc-s390.c:1524
-#: config/tc-v850.c:3026
+#: config/tc-arc.c:1760 config/tc-i370.c:2206 config/tc-mn10200.c:1142
+#: config/tc-mn10300.c:1822 config/tc-ppc.c:3350 config/tc-s390.c:1523
+#: config/tc-v850.c:3029
#, c-format
msgid "junk at end of line: `%s'"
msgstr ""
-#: config/tc-arc.c:1798
+#: config/tc-arc.c:1799
msgid "8 byte instruction in delay slot"
msgstr ""
#. except for jl addr
-#: config/tc-arc.c:1801
+#: config/tc-arc.c:1802
msgid "8 byte jump instruction with delay slot"
msgstr ""
-#: config/tc-arc.c:1809
+#: config/tc-arc.c:1810
msgid "conditional branch follows set of flags"
msgstr ""
-#: config/tc-arc.c:1893 config/tc-arm.c:17216
+#: config/tc-arc.c:1894 config/tc-arm.c:17586
#, c-format
msgid "bad instruction `%s'"
msgstr ""
-#: config/tc-arm.c:556
+#: config/tc-arm.c:560
msgid "ARM register expected"
msgstr ""
-#: config/tc-arm.c:557
+#: config/tc-arm.c:561
msgid "bad or missing co-processor number"
msgstr ""
-#: config/tc-arm.c:558
+#: config/tc-arm.c:562
msgid "co-processor register expected"
msgstr ""
-#: config/tc-arm.c:559
+#: config/tc-arm.c:563
msgid "FPA register expected"
msgstr ""
-#: config/tc-arm.c:560
+#: config/tc-arm.c:564
msgid "VFP single precision register expected"
msgstr ""
-#: config/tc-arm.c:561
+#: config/tc-arm.c:565
msgid "VFP/Neon double precision register expected"
msgstr ""
-#: config/tc-arm.c:562
+#: config/tc-arm.c:566
msgid "Neon quad precision register expected"
msgstr ""
-#: config/tc-arm.c:563
+#: config/tc-arm.c:567
msgid "VFP single or double precision register expected"
msgstr ""
-#: config/tc-arm.c:564
+#: config/tc-arm.c:568
msgid "Neon double or quad precision register expected"
msgstr ""
-#: config/tc-arm.c:565
+#: config/tc-arm.c:569
msgid "VFP single, double or Neon quad precision register expected"
msgstr ""
-#: config/tc-arm.c:566
+#: config/tc-arm.c:570
msgid "VFP system register expected"
msgstr ""
-#: config/tc-arm.c:567
+#: config/tc-arm.c:571
msgid "Maverick MVF register expected"
msgstr ""
-#: config/tc-arm.c:568
+#: config/tc-arm.c:572
msgid "Maverick MVD register expected"
msgstr ""
-#: config/tc-arm.c:569
+#: config/tc-arm.c:573
msgid "Maverick MVFX register expected"
msgstr ""
-#: config/tc-arm.c:570
+#: config/tc-arm.c:574
msgid "Maverick MVDX register expected"
msgstr ""
-#: config/tc-arm.c:571
+#: config/tc-arm.c:575
msgid "Maverick MVAX register expected"
msgstr ""
-#: config/tc-arm.c:572
+#: config/tc-arm.c:576
msgid "Maverick DSPSC register expected"
msgstr ""
-#: config/tc-arm.c:573
+#: config/tc-arm.c:577
msgid "iWMMXt data register expected"
msgstr ""
-#: config/tc-arm.c:574 config/tc-arm.c:6650
+#: config/tc-arm.c:578 config/tc-arm.c:6961
msgid "iWMMXt control register expected"
msgstr ""
-#: config/tc-arm.c:575
+#: config/tc-arm.c:579
msgid "iWMMXt scalar register expected"
msgstr ""
-#: config/tc-arm.c:576
+#: config/tc-arm.c:580
msgid "XScale accumulator register expected"
msgstr ""
#. For score5u : div/mul will pop warning message, mmu/alw/asw will pop error message.
-#: config/tc-arm.c:734 config/tc-score.c:259
+#: config/tc-arm.c:739 config/tc-score.c:259
msgid "bad arguments to instruction"
msgstr ""
-#: config/tc-arm.c:735
+#: config/tc-arm.c:740
msgid "r13 not allowed here"
msgstr ""
-#: config/tc-arm.c:736
+#: config/tc-arm.c:741
msgid "r15 not allowed here"
msgstr ""
-#: config/tc-arm.c:737
+#: config/tc-arm.c:742
msgid "instruction cannot be conditional"
msgstr ""
-#: config/tc-arm.c:738
+#: config/tc-arm.c:743
msgid "registers may not be the same"
msgstr ""
-#: config/tc-arm.c:739
+#: config/tc-arm.c:744
msgid "lo register required"
msgstr ""
-#: config/tc-arm.c:740
+#: config/tc-arm.c:745
msgid "instruction not supported in Thumb16 mode"
msgstr ""
-#: config/tc-arm.c:741
+#: config/tc-arm.c:746
msgid "instruction does not accept this addressing mode"
msgstr ""
-#: config/tc-arm.c:742
+#: config/tc-arm.c:747
msgid "branch must be last instruction in IT block"
msgstr ""
-#: config/tc-arm.c:743
+#: config/tc-arm.c:748
msgid "instruction not allowed in IT block"
msgstr ""
-#: config/tc-arm.c:744
+#: config/tc-arm.c:749
msgid "selected FPU does not support instruction"
msgstr ""
-#: config/tc-arm.c:745
+#: config/tc-arm.c:750
msgid "thumb conditional instruction should be in IT block"
msgstr ""
-#: config/tc-arm.c:746
+#: config/tc-arm.c:751
msgid "incorrect condition in IT block"
msgstr ""
-#: config/tc-arm.c:747
+#: config/tc-arm.c:752
msgid "IT falling in the range of a previous IT block"
msgstr ""
-#: config/tc-arm.c:748
+#: config/tc-arm.c:753
msgid "missing .fnstart before unwinding directive"
msgstr ""
-#: config/tc-arm.c:750
+#: config/tc-arm.c:755
msgid "cannot use register index with PC-relative addressing"
msgstr ""
-#: config/tc-arm.c:752
+#: config/tc-arm.c:757
msgid "cannot use writeback with PC-relative addressing"
msgstr ""
-#: config/tc-arm.c:754
+#: config/tc-arm.c:759
msgid "using "
msgstr ""
-#: config/tc-arm.c:951
+#: config/tc-arm.c:966
msgid "immediate expression requires a # prefix"
msgstr ""
-#: config/tc-arm.c:979 read.c:3727
+#: config/tc-arm.c:994 read.c:3731
msgid "missing expression"
msgstr ""
-#: config/tc-arm.c:1009 config/tc-arm.c:4917 config/tc-i960.c:1300
+#: config/tc-arm.c:1024 config/tc-arm.c:5207 config/tc-i960.c:1297
#: config/tc-score.c:1210
msgid "invalid constant"
msgstr ""
-#: config/tc-arm.c:1139
+#: config/tc-arm.c:1154
msgid "expected #constant"
msgstr ""
-#: config/tc-arm.c:1302
+#: config/tc-arm.c:1317
#, c-format
msgid "unexpected character `%c' in type specifier"
msgstr ""
-#: config/tc-arm.c:1319
+#: config/tc-arm.c:1334
#, c-format
msgid "bad size %d in type specifier"
msgstr ""
-#: config/tc-arm.c:1369
+#: config/tc-arm.c:1384
msgid "only one type should be specified for operand"
msgstr ""
-#: config/tc-arm.c:1447
+#: config/tc-arm.c:1462
msgid "can't redefine type for operand"
msgstr ""
-#: config/tc-arm.c:1458
+#: config/tc-arm.c:1473
msgid "only D registers may be indexed"
msgstr ""
-#: config/tc-arm.c:1464
+#: config/tc-arm.c:1479
msgid "can't change index for operand"
msgstr ""
-#: config/tc-arm.c:1527
+#: config/tc-arm.c:1542
msgid "register operand expected, but got scalar"
msgstr ""
-#: config/tc-arm.c:1560
+#: config/tc-arm.c:1575
msgid "scalar must have an index"
msgstr ""
-#: config/tc-arm.c:1565 config/tc-arm.c:15368 config/tc-arm.c:15428
-#: config/tc-arm.c:15850
+#: config/tc-arm.c:1580 config/tc-arm.c:15735 config/tc-arm.c:15795
+#: config/tc-arm.c:16217
msgid "scalar index out of range"
msgstr ""
-#: config/tc-arm.c:1615
+#: config/tc-arm.c:1630
msgid "bad range in register list"
msgstr ""
-#: config/tc-arm.c:1623 config/tc-arm.c:1632 config/tc-arm.c:1673
+#: config/tc-arm.c:1638 config/tc-arm.c:1647 config/tc-arm.c:1688
#, c-format
msgid "Warning: duplicated register (r%d) in register list"
msgstr ""
-#: config/tc-arm.c:1635
+#: config/tc-arm.c:1650
msgid "Warning: register range not in ascending order"
msgstr ""
-#: config/tc-arm.c:1646
+#: config/tc-arm.c:1661
msgid "missing `}'"
msgstr ""
-#: config/tc-arm.c:1662
+#: config/tc-arm.c:1677
msgid "invalid register mask"
msgstr ""
-#: config/tc-arm.c:1797 config/tc-arm.c:1841
+#: config/tc-arm.c:1812 config/tc-arm.c:1856
msgid "register out of range in list"
msgstr ""
-#: config/tc-arm.c:1819 config/tc-arm.c:3915 config/tc-arm.c:4049
+#: config/tc-arm.c:1834 config/tc-arm.c:4161 config/tc-arm.c:4295
msgid "register list not in ascending order"
msgstr ""
-#: config/tc-arm.c:1850
+#: config/tc-arm.c:1865
msgid "register range not in ascending order"
msgstr ""
-#: config/tc-arm.c:1883
+#: config/tc-arm.c:1898
msgid "non-contiguous register range"
msgstr ""
-#: config/tc-arm.c:1942
+#: config/tc-arm.c:1957
msgid "register stride must be 1 or 2"
msgstr ""
-#: config/tc-arm.c:1943
+#: config/tc-arm.c:1958
msgid "mismatched element/structure types in list"
msgstr ""
-#: config/tc-arm.c:2007
+#: config/tc-arm.c:2022
msgid "don't use Rn-Rm syntax with non-unit stride"
msgstr ""
-#: config/tc-arm.c:2062
+#: config/tc-arm.c:2077
msgid "error parsing element/structure list"
msgstr ""
-#: config/tc-arm.c:2068
+#: config/tc-arm.c:2083
msgid "expected }"
msgstr ""
-#: config/tc-arm.c:2159
+#: config/tc-arm.c:2174
msgid "attempt to redefine typed alias"
msgstr ""
-#: config/tc-arm.c:2293
+#: config/tc-arm.c:2308
msgid "bad type for register"
msgstr ""
-#: config/tc-arm.c:2304
+#: config/tc-arm.c:2319
msgid "expression must be constant"
msgstr ""
-#: config/tc-arm.c:2321
+#: config/tc-arm.c:2336
msgid "can't redefine the type of a register alias"
msgstr ""
-#: config/tc-arm.c:2328
+#: config/tc-arm.c:2343
msgid "you must specify a single type only"
msgstr ""
-#: config/tc-arm.c:2341
+#: config/tc-arm.c:2356
msgid "can't redefine the index of a scalar alias"
msgstr ""
-#: config/tc-arm.c:2349
+#: config/tc-arm.c:2364
msgid "scalar index must be constant"
msgstr ""
-#: config/tc-arm.c:2358
+#: config/tc-arm.c:2373
msgid "expecting ]"
msgstr ""
-#: config/tc-arm.c:2411
+#: config/tc-arm.c:2426
msgid "invalid syntax for .dn directive"
msgstr ""
-#: config/tc-arm.c:2417
+#: config/tc-arm.c:2432
msgid "invalid syntax for .qn directive"
msgstr ""
-#: config/tc-arm.c:2452
+#: config/tc-arm.c:2467
#, c-format
msgid "ignoring attempt to use .unreq on fixed register name: '%s'"
msgstr ""
-#: config/tc-arm.c:2720
+#: config/tc-arm.c:2735
#, c-format
msgid "Failed to find real start of function: %s\n"
msgstr ""
-#: config/tc-arm.c:2737
+#: config/tc-arm.c:2752
msgid "selected processor does not support THUMB opcodes"
msgstr ""
-#: config/tc-arm.c:2750
+#: config/tc-arm.c:2765
msgid "selected processor does not support ARM opcodes"
msgstr ""
-#: config/tc-arm.c:2762
+#: config/tc-arm.c:2777
#, c-format
msgid "invalid instruction size selected (%d)"
msgstr ""
-#: config/tc-arm.c:2794
+#: config/tc-arm.c:2809
#, c-format
msgid "invalid operand to .code directive (%d) (expecting 16 or 32)"
msgstr ""
-#: config/tc-arm.c:2850
+#: config/tc-arm.c:2865
#, c-format
msgid "expected comma after name \"%s\""
msgstr ""
-#: config/tc-arm.c:2900 config/tc-m32r.c:588
+#: config/tc-arm.c:2915 config/tc-m32r.c:587
#, c-format
msgid "symbol `%s' already defined"
msgstr ""
-#: config/tc-arm.c:2934
+#: config/tc-arm.c:2949
#, c-format
msgid "unrecognized syntax mode \"%s\""
msgstr ""
-#: config/tc-arm.c:2955
+#: config/tc-arm.c:2970
#, c-format
msgid "alignment too large: %d assumed"
msgstr ""
-#: config/tc-arm.c:2958
+#: config/tc-arm.c:2973
msgid "alignment negative. 0 assumed."
msgstr ""
-#: config/tc-arm.c:3293
+#: config/tc-arm.c:3039
+msgid ".ref pseudo-op only available with -mccs flag."
+msgstr ""
+
+#: config/tc-arm.c:3080
+msgid ".asmfunc repeated."
+msgstr ""
+
+#: config/tc-arm.c:3084
+msgid ".asmfunc without function."
+msgstr ""
+
+#: config/tc-arm.c:3090
+msgid ".asmfunc pseudo-op only available with -mccs flag."
+msgstr ""
+
+#: config/tc-arm.c:3101
+msgid ".endasmfunc without a .asmfunc."
+msgstr ""
+
+#: config/tc-arm.c:3105
+msgid ".endasmfunc without function."
+msgstr ""
+
+#: config/tc-arm.c:3116
+msgid ".endasmfunc pseudo-op only available with -mccs flag."
+msgstr ""
+
+#: config/tc-arm.c:3125
+msgid ".def pseudo-op only available with -mccs flag."
+msgstr ""
+
+#: config/tc-arm.c:3283
+msgid "invalid type for literal pool"
+msgstr ""
+
+#: config/tc-arm.c:3362 config/tc-tic54x.c:5385
+#, c-format
+msgid "Invalid label '%s'"
+msgstr ""
+
+#: config/tc-arm.c:3538
msgid "(plt) is only valid on branch targets"
msgstr ""
-#: config/tc-arm.c:3299 config/tc-s390.c:1146 config/tc-s390.c:1789
-#: config/tc-xtensa.c:1591
+#: config/tc-arm.c:3544 config/tc-s390.c:1145 config/tc-s390.c:1788
+#: config/tc-xtensa.c:1613
#, c-format
msgid "%s relocations do not fit in %d bytes"
msgstr ""
-#: config/tc-arm.c:3376
+#: config/tc-arm.c:3622
msgid ".inst.n operand too big. Use .inst.w instead"
msgstr ""
-#: config/tc-arm.c:3396
+#: config/tc-arm.c:3642
msgid "cannot determine Thumb instruction size. Use .inst.n/.inst.w instead"
msgstr ""
-#: config/tc-arm.c:3426
+#: config/tc-arm.c:3672
msgid "width suffixes are invalid in ARM mode"
msgstr ""
-#: config/tc-arm.c:3468 dwarf2dbg.c:762
+#: config/tc-arm.c:3714 dwarf2dbg.c:751
msgid "expected 0 or 1"
msgstr ""
-#: config/tc-arm.c:3472
+#: config/tc-arm.c:3718
msgid "missing comma"
msgstr ""
-#: config/tc-arm.c:3505
+#: config/tc-arm.c:3751
msgid "duplicate .fnstart directive"
msgstr ""
-#: config/tc-arm.c:3536 config/tc-tic6x.c:412
+#: config/tc-arm.c:3782 config/tc-tic6x.c:412
msgid "duplicate .handlerdata directive"
msgstr ""
-#: config/tc-arm.c:3555
+#: config/tc-arm.c:3801
msgid ".fnend directive without .fnstart"
msgstr ""
-#: config/tc-arm.c:3622 config/tc-tic6x.c:393
+#: config/tc-arm.c:3868 config/tc-tic6x.c:393
msgid "personality routine specified for cantunwind frame"
msgstr ""
-#: config/tc-arm.c:3639 config/tc-tic6x.c:454
+#: config/tc-arm.c:3885 config/tc-tic6x.c:454
msgid "duplicate .personalityindex directive"
msgstr ""
-#: config/tc-arm.c:3646 config/tc-tic6x.c:461
+#: config/tc-arm.c:3892 config/tc-tic6x.c:461
msgid "bad personality routine number"
msgstr ""
-#: config/tc-arm.c:3668 config/tc-tic6x.c:478
+#: config/tc-arm.c:3914 config/tc-tic6x.c:478
msgid "duplicate .personality directive"
msgstr ""
-#: config/tc-arm.c:3691 config/tc-arm.c:3819 config/tc-arm.c:3867
+#: config/tc-arm.c:3937 config/tc-arm.c:4065 config/tc-arm.c:4113
msgid "expected register list"
msgstr ""
-#: config/tc-arm.c:3773
+#: config/tc-arm.c:4019
msgid "expected , <constant>"
msgstr ""
-#: config/tc-arm.c:3782
+#: config/tc-arm.c:4028
msgid "number of registers must be in the range [1:4]"
msgstr ""
-#: config/tc-arm.c:3929 config/tc-arm.c:4063
+#: config/tc-arm.c:4175 config/tc-arm.c:4309
msgid "bad register range"
msgstr ""
-#: config/tc-arm.c:4129
+#: config/tc-arm.c:4375
msgid "FPA .unwind_save does not take a register list"
msgstr ""
-#: config/tc-arm.c:4148
+#: config/tc-arm.c:4403
msgid ".unwind_save does not support this kind of register"
msgstr ""
-#: config/tc-arm.c:4187
+#: config/tc-arm.c:4442
msgid "SP and PC not permitted in .unwind_movsp directive"
msgstr ""
-#: config/tc-arm.c:4192
+#: config/tc-arm.c:4447
msgid "unexpected .unwind_movsp directive"
msgstr ""
-#: config/tc-arm.c:4219
+#: config/tc-arm.c:4474
msgid "stack increment must be multiple of 4"
msgstr ""
-#: config/tc-arm.c:4251
+#: config/tc-arm.c:4506
msgid "expected <reg>, <reg>"
msgstr ""
-#: config/tc-arm.c:4269
+#: config/tc-arm.c:4524
msgid "register must be either sp or set by a previousunwind_movsp directive"
msgstr ""
-#: config/tc-arm.c:4308
+#: config/tc-arm.c:4563
msgid "expected <offset>, <opcode>"
msgstr ""
-#: config/tc-arm.c:4320
+#: config/tc-arm.c:4575
msgid "unwind opcode too long"
msgstr ""
-#: config/tc-arm.c:4325
+#: config/tc-arm.c:4580
msgid "invalid unwind opcode"
msgstr ""
-#: config/tc-arm.c:4505 config/tc-arm.c:5447 config/tc-arm.c:9688
-#: config/tc-arm.c:10211 config/tc-arm.c:12231 config/tc-arm.c:13664
-#: config/tc-arm.c:22438 config/tc-arm.c:22463 config/tc-arm.c:22471
-#: config/tc-metag.c:5175 config/tc-z8k.c:1144 config/tc-z8k.c:1154
+#: config/tc-arm.c:4767 config/tc-arm.c:5739 config/tc-arm.c:10246
+#: config/tc-arm.c:10769 config/tc-arm.c:12789 config/tc-arm.c:14222
+#: config/tc-arm.c:22819 config/tc-arm.c:22844 config/tc-arm.c:22852
+#: config/tc-metag.c:5175 config/tc-z8k.c:1143 config/tc-z8k.c:1153
msgid "immediate value out of range"
msgstr ""
-#: config/tc-arm.c:4670
+#: config/tc-arm.c:4935
msgid "invalid FPA immediate expression"
msgstr ""
-#: config/tc-arm.c:4817
+#: config/tc-arm.c:5107
msgid "'LSL' or 'ASR' required"
msgstr ""
-#: config/tc-arm.c:4825
+#: config/tc-arm.c:5115
msgid "'LSL' required"
msgstr ""
-#: config/tc-arm.c:4833
+#: config/tc-arm.c:5123
msgid "'ASR' required"
msgstr ""
-#: config/tc-arm.c:4912
+#: config/tc-arm.c:5202
msgid "invalid rotation"
msgstr ""
-#: config/tc-arm.c:5071 config/tc-arm.c:5238
+#: config/tc-arm.c:5361 config/tc-arm.c:5530
msgid "unknown group relocation"
msgstr ""
-#: config/tc-arm.c:5107
+#: config/tc-arm.c:5397
msgid "alignment must be constant"
msgstr ""
-#: config/tc-arm.c:5269
+#: config/tc-arm.c:5561
msgid "this group relocation is not allowed on this instruction"
msgstr ""
-#: config/tc-arm.c:5324
+#: config/tc-arm.c:5616
msgid "'}' expected at end of 'option' field"
msgstr ""
-#: config/tc-arm.c:5329
+#: config/tc-arm.c:5621
msgid "cannot combine index with option"
msgstr ""
-#: config/tc-arm.c:5585
+#: config/tc-arm.c:5877
msgid "unexpected bit specified after APSR"
msgstr ""
-#: config/tc-arm.c:5597
+#: config/tc-arm.c:5889
msgid "selected processor does not support DSP extension"
msgstr ""
-#: config/tc-arm.c:5609
+#: config/tc-arm.c:5901
msgid "bad bitmask specified after APSR"
msgstr ""
-#: config/tc-arm.c:5633
+#: config/tc-arm.c:5925
msgid "writing to APSR without specifying a bitmask is deprecated"
msgstr ""
-#: config/tc-arm.c:5645 config/tc-arm.c:11356 config/tc-arm.c:11400
-#: config/tc-arm.c:11404
+#: config/tc-arm.c:5937 config/tc-arm.c:11914 config/tc-arm.c:11958
+#: config/tc-arm.c:11962
msgid "selected processor does not support requested special purpose register"
msgstr ""
-#: config/tc-arm.c:5650
+#: config/tc-arm.c:5942
msgid "flag for {c}psr instruction expected"
msgstr ""
-#: config/tc-arm.c:5675
+#: config/tc-arm.c:5967
msgid "unrecognized CPS flag"
msgstr ""
-#: config/tc-arm.c:5682
+#: config/tc-arm.c:5974
msgid "missing CPS flags"
msgstr ""
-#: config/tc-arm.c:5705 config/tc-arm.c:5711
+#: config/tc-arm.c:5997 config/tc-arm.c:6003
msgid "valid endian specifiers are be or le"
msgstr ""
-#: config/tc-arm.c:5733
+#: config/tc-arm.c:6025
msgid "missing rotation field after comma"
msgstr ""
-#: config/tc-arm.c:5748
+#: config/tc-arm.c:6040
msgid "rotation can only be 0, 8, 16, or 24"
msgstr ""
-#: config/tc-arm.c:5777
+#: config/tc-arm.c:6069
msgid "condition required"
msgstr ""
-#: config/tc-arm.c:5838 config/tc-arm.c:8012
+#: config/tc-arm.c:6130 config/tc-arm.c:8570
msgid "'[' expected"
msgstr ""
-#: config/tc-arm.c:5851
+#: config/tc-arm.c:6143
msgid "',' expected"
msgstr ""
-#: config/tc-arm.c:5868
+#: config/tc-arm.c:6160
msgid "invalid shift"
msgstr ""
-#: config/tc-arm.c:5941
+#: config/tc-arm.c:6233
msgid "can't use Neon quad register here"
msgstr ""
-#: config/tc-arm.c:6007
+#: config/tc-arm.c:6300
msgid "expected <Rm> or <Dm> or <Qm> operand"
msgstr ""
-#: config/tc-arm.c:6087
+#: config/tc-arm.c:6380
msgid "parse error"
msgstr ""
#. ISB can only take SY as an option.
-#: config/tc-arm.c:6351
+#: config/tc-arm.c:6645
msgid "invalid barrier type"
msgstr ""
-#: config/tc-arm.c:6488
+#: config/tc-arm.c:6741
+msgid "only floating point zero is allowed as immediate value"
+msgstr ""
+
+#: config/tc-arm.c:6799
msgid "immediate value is out of range"
msgstr ""
-#: config/tc-arm.c:6635
+#: config/tc-arm.c:6946
msgid "iWMMXt data or control register expected"
msgstr ""
-#: config/tc-arm.c:6675
+#: config/tc-arm.c:6986
msgid "Banked registers are not available with this architecture."
msgstr ""
-#: config/tc-arm.c:6897 config/tc-score.c:264
+#: config/tc-arm.c:7208 config/tc-score.c:264
msgid "garbage following instruction"
msgstr ""
#. If REG is R13 (the stack pointer), warn that its use is
#. deprecated.
-#: config/tc-arm.c:6938
+#: config/tc-arm.c:7249
msgid "use of r13 is deprecated"
msgstr ""
-#: config/tc-arm.c:7008
+#: config/tc-arm.c:7319
msgid "D register out of range for selected VFP version"
msgstr ""
-#: config/tc-arm.c:7087 config/tc-arm.c:9416
+#: config/tc-arm.c:7398 config/tc-arm.c:9974
msgid "Instruction does not support =N addresses"
msgstr ""
-#: config/tc-arm.c:7095
+#: config/tc-arm.c:7406
msgid "instruction does not accept preindexed addressing"
msgstr ""
#. unindexed - only for coprocessor
-#: config/tc-arm.c:7111 config/tc-arm.c:9479
+#: config/tc-arm.c:7422 config/tc-arm.c:10037
msgid "instruction does not accept unindexed addressing"
msgstr ""
-#: config/tc-arm.c:7119
+#: config/tc-arm.c:7430
msgid "destination register same as write-back base"
msgstr ""
-#: config/tc-arm.c:7120
+#: config/tc-arm.c:7431
msgid "source register same as write-back base"
msgstr ""
-#: config/tc-arm.c:7170
+#: config/tc-arm.c:7481
msgid "use of PC in this instruction is deprecated"
msgstr ""
-#: config/tc-arm.c:7193
+#: config/tc-arm.c:7504
msgid "instruction does not accept scaled register index"
msgstr ""
-#: config/tc-arm.c:7247
+#: config/tc-arm.c:7760
+msgid "invalid pseudo operation"
+msgstr ""
+
+#: config/tc-arm.c:7887
msgid "instruction does not support unindexed addressing"
msgstr ""
-#: config/tc-arm.c:7262
+#: config/tc-arm.c:7902
msgid "pc may not be used with write-back"
msgstr ""
-#: config/tc-arm.c:7267
+#: config/tc-arm.c:7907
msgid "instruction does not support writeback"
msgstr ""
-#: config/tc-arm.c:7313
-msgid "invalid pseudo operation"
-msgstr ""
-
-#: config/tc-arm.c:7442
+#: config/tc-arm.c:8000
msgid "Rn must not overlap other operands"
msgstr ""
-#: config/tc-arm.c:7447
+#: config/tc-arm.c:8005
msgid "swp{b} use is obsoleted for ARMv8 and later"
msgstr ""
-#: config/tc-arm.c:7450
+#: config/tc-arm.c:8008
msgid "swp{b} use is deprecated for ARMv6 and ARMv7"
msgstr ""
-#: config/tc-arm.c:7552 config/tc-arm.c:7571 config/tc-arm.c:7584
-#: config/tc-arm.c:10052 config/tc-arm.c:10083 config/tc-arm.c:10105
+#: config/tc-arm.c:8110 config/tc-arm.c:8129 config/tc-arm.c:8142
+#: config/tc-arm.c:10610 config/tc-arm.c:10641 config/tc-arm.c:10663
msgid "bit-field extends past end of register"
msgstr ""
-#: config/tc-arm.c:7614
+#: config/tc-arm.c:8172
msgid "the only valid suffixes here are '(plt)' and '(tlscall)'"
msgstr ""
-#: config/tc-arm.c:7667
+#: config/tc-arm.c:8225
msgid "use of r15 in blx in ARM mode is not really useful"
msgstr ""
-#: config/tc-arm.c:7689
+#: config/tc-arm.c:8247
msgid "use of r15 in bx in ARM mode is not really useful"
msgstr ""
-#: config/tc-arm.c:7714
+#: config/tc-arm.c:8272
msgid "use of r15 in bxj is not really useful"
msgstr ""
-#: config/tc-arm.c:7762
+#: config/tc-arm.c:8320
msgid "This coprocessor register access is deprecated in ARMv8"
msgstr ""
-#: config/tc-arm.c:7962 config/tc-arm.c:7971
+#: config/tc-arm.c:8520 config/tc-arm.c:8529
msgid "writeback of base register is UNPREDICTABLE"
msgstr ""
-#: config/tc-arm.c:7965
+#: config/tc-arm.c:8523
msgid "writeback of base register when in register list is UNPREDICTABLE"
msgstr ""
-#: config/tc-arm.c:7975
+#: config/tc-arm.c:8533
msgid "if writeback register is in list, it must be the lowest reg in the list"
msgstr ""
-#: config/tc-arm.c:8007
+#: config/tc-arm.c:8565
msgid "first transfer register must be even"
msgstr ""
-#: config/tc-arm.c:8010
+#: config/tc-arm.c:8568
msgid "can only transfer two consecutive registers"
msgstr ""
@@ -3299,1151 +3370,1165 @@ msgstr ""
#. have been called in the first place.
#. If op 2 were present and equal to PC, this function wouldn't
#. have been called in the first place.
-#: config/tc-arm.c:8011 config/tc-arm.c:8081 config/tc-arm.c:8714
-#: config/tc-arm.c:10857
+#: config/tc-arm.c:8569 config/tc-arm.c:8639 config/tc-arm.c:9272
+#: config/tc-arm.c:11415
msgid "r14 not allowed here"
msgstr ""
-#: config/tc-arm.c:8023
+#: config/tc-arm.c:8581
msgid "base register written back, and overlaps second transfer register"
msgstr ""
-#: config/tc-arm.c:8033
+#: config/tc-arm.c:8591
msgid "index register overlaps transfer register"
msgstr ""
-#: config/tc-arm.c:8062 config/tc-arm.c:8681
+#: config/tc-arm.c:8620 config/tc-arm.c:9239
msgid "offset must be zero in ARM encoding"
msgstr ""
-#: config/tc-arm.c:8075 config/tc-arm.c:8708
+#: config/tc-arm.c:8633 config/tc-arm.c:9266
msgid "even register required"
msgstr ""
-#: config/tc-arm.c:8078
+#: config/tc-arm.c:8636
msgid "can only load two consecutive registers"
msgstr ""
-#: config/tc-arm.c:8096
+#: config/tc-arm.c:8654
msgid "ldr to register 15 must be 4-byte alligned"
msgstr ""
-#: config/tc-arm.c:8119 config/tc-arm.c:8151
+#: config/tc-arm.c:8677 config/tc-arm.c:8709
msgid "this instruction requires a post-indexed address"
msgstr ""
-#: config/tc-arm.c:8178
+#: config/tc-arm.c:8736
msgid "Rd and Rm should be different in mla"
msgstr ""
-#: config/tc-arm.c:8202 config/tc-arm.c:11221
+#: config/tc-arm.c:8760 config/tc-arm.c:11779
msgid ":lower16: not allowed this instruction"
msgstr ""
-#: config/tc-arm.c:8204
+#: config/tc-arm.c:8762
msgid ":upper16: not allowed instruction"
msgstr ""
-#: config/tc-arm.c:8223
+#: config/tc-arm.c:8781
msgid "operand 1 must be FPSCR"
msgstr ""
-#: config/tc-arm.c:8305 config/tc-arm.c:11340
+#: config/tc-arm.c:8863 config/tc-arm.c:11898
msgid "bad register for mrs"
msgstr ""
-#: config/tc-arm.c:8312 config/tc-arm.c:11363
+#: config/tc-arm.c:8870 config/tc-arm.c:11921
msgid "'APSR', 'CPSR' or 'SPSR' expected"
msgstr ""
-#: config/tc-arm.c:8353
+#: config/tc-arm.c:8911
msgid "Rd and Rm should be different in mul"
msgstr ""
-#: config/tc-arm.c:8372 config/tc-arm.c:8626 config/tc-arm.c:11501
+#: config/tc-arm.c:8930 config/tc-arm.c:9184 config/tc-arm.c:12059
msgid "rdhi and rdlo must be different"
msgstr ""
-#: config/tc-arm.c:8378
+#: config/tc-arm.c:8936
msgid "rdhi, rdlo and rm must all be different"
msgstr ""
-#: config/tc-arm.c:8444
+#: config/tc-arm.c:9002
msgid "'[' expected after PLD mnemonic"
msgstr ""
-#: config/tc-arm.c:8446 config/tc-arm.c:8461
+#: config/tc-arm.c:9004 config/tc-arm.c:9019
msgid "post-indexed expression used in preload instruction"
msgstr ""
-#: config/tc-arm.c:8448 config/tc-arm.c:8463
+#: config/tc-arm.c:9006 config/tc-arm.c:9021
msgid "writeback used in preload instruction"
msgstr ""
-#: config/tc-arm.c:8450 config/tc-arm.c:8465
+#: config/tc-arm.c:9008 config/tc-arm.c:9023
msgid "unindexed addressing used in preload instruction"
msgstr ""
-#: config/tc-arm.c:8459
+#: config/tc-arm.c:9017
msgid "'[' expected after PLI mnemonic"
msgstr ""
-#: config/tc-arm.c:8550 config/tc-arm.c:11817
+#: config/tc-arm.c:9108 config/tc-arm.c:12375
msgid "setend use is deprecated for ARMv8"
msgstr ""
-#: config/tc-arm.c:8571 config/tc-arm.c:11878 config/tc-arm.c:11910
-#: config/tc-arm.c:11953
+#: config/tc-arm.c:9129 config/tc-arm.c:12436 config/tc-arm.c:12468
+#: config/tc-arm.c:12511
msgid "extraneous shift as part of operand to shift insn"
msgstr ""
-#: config/tc-arm.c:8652
+#: config/tc-arm.c:9210
msgid "SRS base register must be r13"
msgstr ""
-#: config/tc-arm.c:8711
+#: config/tc-arm.c:9269
msgid "can only store two consecutive registers"
msgstr ""
-#: config/tc-arm.c:8825 config/tc-arm.c:8842
+#: config/tc-arm.c:9383 config/tc-arm.c:9400
msgid "only two consecutive VFP SP registers allowed here"
msgstr ""
-#: config/tc-arm.c:8870 config/tc-arm.c:8885
+#: config/tc-arm.c:9428 config/tc-arm.c:9443
msgid "this addressing mode requires base-register writeback"
msgstr ""
#. If srcsize is 16, inst.operands[1].imm must be in the range 0-16.
#. i.e. immbits must be in range 0 - 16.
-#: config/tc-arm.c:9002
+#: config/tc-arm.c:9560
msgid "immediate value out of range, expected range [0, 16]"
msgstr ""
#. If srcsize is 32, inst.operands[1].imm must be in the range 1-32.
#. i.e. immbits must be in range 0 - 31.
-#: config/tc-arm.c:9009
+#: config/tc-arm.c:9567
msgid "immediate value out of range, expected range [1, 32]"
msgstr ""
-#: config/tc-arm.c:9075
+#: config/tc-arm.c:9633
msgid "this instruction does not support indexing"
msgstr ""
-#: config/tc-arm.c:9098
+#: config/tc-arm.c:9656
msgid "only r15 allowed here"
msgstr ""
-#: config/tc-arm.c:9233
+#: config/tc-arm.c:9791
msgid "immediate operand requires iWMMXt2"
msgstr ""
-#: config/tc-arm.c:9377
+#: config/tc-arm.c:9935
msgid "shift by register not allowed in thumb mode"
msgstr ""
-#: config/tc-arm.c:9389 config/tc-arm.c:12061 config/tc-arm.c:21828
+#: config/tc-arm.c:9947 config/tc-arm.c:12619 config/tc-arm.c:22214
msgid "shift expression is too large"
msgstr ""
-#: config/tc-arm.c:9422
+#: config/tc-arm.c:9980
msgid "cannot use register index with this instruction"
msgstr ""
-#: config/tc-arm.c:9424
+#: config/tc-arm.c:9982
msgid "Thumb does not support negative register indexing"
msgstr ""
-#: config/tc-arm.c:9426
+#: config/tc-arm.c:9984
msgid "Thumb does not support register post-indexing"
msgstr ""
-#: config/tc-arm.c:9428
+#: config/tc-arm.c:9986
msgid "Thumb does not support register indexing with writeback"
msgstr ""
-#: config/tc-arm.c:9430
+#: config/tc-arm.c:9988
msgid "Thumb supports only LSL in shifted register indexing"
msgstr ""
-#: config/tc-arm.c:9439 config/tc-arm.c:15160
+#: config/tc-arm.c:9997 config/tc-arm.c:15527
msgid "shift out of range"
msgstr ""
-#: config/tc-arm.c:9448
+#: config/tc-arm.c:10006
msgid "cannot use writeback with this instruction"
msgstr ""
-#: config/tc-arm.c:9469
+#: config/tc-arm.c:10027
msgid "cannot use post-indexing with PC-relative addressing"
msgstr ""
-#: config/tc-arm.c:9470
+#: config/tc-arm.c:10028
msgid "cannot use post-indexing with this instruction"
msgstr ""
-#: config/tc-arm.c:9683
+#: config/tc-arm.c:10241
msgid "only SUBS PC, LR, #const allowed"
msgstr ""
-#: config/tc-arm.c:9765 config/tc-arm.c:9920 config/tc-arm.c:10017
-#: config/tc-arm.c:11301 config/tc-arm.c:11607
+#: config/tc-arm.c:10323 config/tc-arm.c:10478 config/tc-arm.c:10575
+#: config/tc-arm.c:11859 config/tc-arm.c:12165
msgid "shift must be constant"
msgstr ""
-#: config/tc-arm.c:9770
+#: config/tc-arm.c:10328
msgid "shift value over 3 not allowed in thumb mode"
msgstr ""
-#: config/tc-arm.c:9772
+#: config/tc-arm.c:10330
msgid "only LSL shift allowed in thumb mode"
msgstr ""
-#: config/tc-arm.c:9796 config/tc-arm.c:9935 config/tc-arm.c:10032
-#: config/tc-arm.c:11314
+#: config/tc-arm.c:10354 config/tc-arm.c:10493 config/tc-arm.c:10590
+#: config/tc-arm.c:11872
msgid "unshifted register required"
msgstr ""
-#: config/tc-arm.c:9811 config/tc-arm.c:10043 config/tc-arm.c:11462
+#: config/tc-arm.c:10369 config/tc-arm.c:10601 config/tc-arm.c:12020
msgid "dest must overlap one source register"
msgstr ""
-#: config/tc-arm.c:9938
+#: config/tc-arm.c:10496
msgid "dest and source1 must be the same register"
msgstr ""
-#: config/tc-arm.c:10207
+#: config/tc-arm.c:10765
msgid "instruction is always unconditional"
msgstr ""
-#: config/tc-arm.c:10322
+#: config/tc-arm.c:10880
msgid "selected processor does not support 'A' form of this instruction"
msgstr ""
-#: config/tc-arm.c:10325
+#: config/tc-arm.c:10883
msgid "Thumb does not support the 2-argument form of this instruction"
msgstr ""
-#: config/tc-arm.c:10446
+#: config/tc-arm.c:11004
msgid "SP not allowed in register list"
msgstr ""
-#: config/tc-arm.c:10450 config/tc-arm.c:10556
+#: config/tc-arm.c:11008 config/tc-arm.c:11114
msgid ""
"having the base register in the register list when using write back is "
"UNPREDICTABLE"
msgstr ""
-#: config/tc-arm.c:10458
+#: config/tc-arm.c:11016
msgid "LR and PC should not both be in register list"
msgstr ""
-#: config/tc-arm.c:10466
+#: config/tc-arm.c:11024
msgid "PC not allowed in register list"
msgstr ""
-#: config/tc-arm.c:10508
+#: config/tc-arm.c:11066
msgid "Thumb load/store multiple does not support {reglist}^"
msgstr ""
-#: config/tc-arm.c:10533 config/tc-arm.c:10610
+#: config/tc-arm.c:11091 config/tc-arm.c:11168
#, c-format
msgid "value stored for r%d is UNKNOWN"
msgstr ""
-#: config/tc-arm.c:10603
+#: config/tc-arm.c:11161
msgid "Thumb-2 instruction only valid in unified syntax"
msgstr ""
-#: config/tc-arm.c:10607 config/tc-arm.c:10617
+#: config/tc-arm.c:11165 config/tc-arm.c:11175
msgid "this instruction will write back the base register"
msgstr ""
-#: config/tc-arm.c:10620
+#: config/tc-arm.c:11178
msgid "this instruction will not write back the base register"
msgstr ""
-#: config/tc-arm.c:10651
+#: config/tc-arm.c:11209
msgid "r14 not allowed as first register when second register is omitted"
msgstr ""
-#: config/tc-arm.c:10751
+#: config/tc-arm.c:11309
msgid ""
"This instruction may be unpredictable if executed on M-profile cores with "
"interrupts enabled."
msgstr ""
-#: config/tc-arm.c:10780 config/tc-arm.c:10793 config/tc-arm.c:10829
+#: config/tc-arm.c:11338 config/tc-arm.c:11351 config/tc-arm.c:11387
msgid "Thumb does not support this addressing mode"
msgstr ""
-#: config/tc-arm.c:10797
+#: config/tc-arm.c:11355
msgid "byte or halfword not valid for base register"
msgstr ""
-#: config/tc-arm.c:10800
+#: config/tc-arm.c:11358
msgid "r15 based store not allowed"
msgstr ""
-#: config/tc-arm.c:10802
+#: config/tc-arm.c:11360
msgid "invalid base register for register offset"
msgstr ""
-#: config/tc-arm.c:10859
+#: config/tc-arm.c:11417
msgid "r12 not allowed here"
msgstr ""
-#: config/tc-arm.c:10865
+#: config/tc-arm.c:11423
msgid "base register written back, and overlaps one of transfer registers"
msgstr ""
-#: config/tc-arm.c:10993
+#: config/tc-arm.c:11551
#, c-format
msgid ""
"Use of r%u as a source register is deprecated when r%u is the destination "
"register."
msgstr ""
-#: config/tc-arm.c:11177
+#: config/tc-arm.c:11735
msgid "shifts in CMP/MOV instructions are only supported in unified syntax"
msgstr ""
-#: config/tc-arm.c:11205
+#: config/tc-arm.c:11763
msgid "only lo regs allowed with immediate"
msgstr ""
-#: config/tc-arm.c:11226
+#: config/tc-arm.c:11784
msgid ":upper16: not allowed this instruction"
msgstr ""
-#: config/tc-arm.c:11381
+#: config/tc-arm.c:11939
msgid "Thumb encoding does not support an immediate here"
msgstr ""
-#: config/tc-arm.c:11467
+#: config/tc-arm.c:12025
msgid "Thumb-2 MUL must not set flags"
msgstr ""
-#: config/tc-arm.c:11532
+#: config/tc-arm.c:12090
msgid "Thumb does not support NOP with hints"
msgstr ""
-#: config/tc-arm.c:11670
+#: config/tc-arm.c:12228
msgid "push/pop do not support {reglist}^"
msgstr ""
-#: config/tc-arm.c:11692
+#: config/tc-arm.c:12250
msgid "invalid register list to push/pop instruction"
msgstr ""
-#: config/tc-arm.c:11937
+#: config/tc-arm.c:12495
msgid "source1 and dest must be same register"
msgstr ""
-#: config/tc-arm.c:11962
+#: config/tc-arm.c:12520
msgid "ror #imm not supported"
msgstr ""
-#: config/tc-arm.c:12013
+#: config/tc-arm.c:12571
msgid "SMC is not permitted on this architecture"
msgstr ""
-#: config/tc-arm.c:12178
+#: config/tc-arm.c:12736
msgid "Thumb encoding does not support rotation"
msgstr ""
-#: config/tc-arm.c:12193
+#: config/tc-arm.c:12751
msgid "SVC is not permitted on this architecture"
msgstr ""
-#: config/tc-arm.c:12209
+#: config/tc-arm.c:12767
msgid "instruction requires register index"
msgstr ""
-#: config/tc-arm.c:12218
+#: config/tc-arm.c:12776
msgid "instruction does not allow shifted index"
msgstr ""
-#: config/tc-arm.c:12402
+#: config/tc-arm.c:12960
msgid "invalid neon suffix for non neon instruction"
msgstr ""
-#: config/tc-arm.c:12697 config/tc-arm.c:13034 config/tc-arm.c:14689
-#: config/tc-arm.c:16082
+#: config/tc-arm.c:13255 config/tc-arm.c:13592 config/tc-arm.c:15056
+#: config/tc-arm.c:16449
msgid "invalid instruction shape"
msgstr ""
-#: config/tc-arm.c:12942
+#: config/tc-arm.c:13500
msgid "types specified in both the mnemonic and operands"
msgstr ""
-#: config/tc-arm.c:12979
+#: config/tc-arm.c:13537
msgid "operand types can't be inferred"
msgstr ""
-#: config/tc-arm.c:12985
+#: config/tc-arm.c:13543
msgid "type specifier has the wrong number of parts"
msgstr ""
-#: config/tc-arm.c:13050 config/tc-arm.c:14829 config/tc-arm.c:14836
+#: config/tc-arm.c:13608 config/tc-arm.c:15196 config/tc-arm.c:15203
msgid "operand size must match register width"
msgstr ""
-#: config/tc-arm.c:13061
+#: config/tc-arm.c:13619
msgid "bad type in Neon instruction"
msgstr ""
-#: config/tc-arm.c:13072
+#: config/tc-arm.c:13630
msgid "inconsistent types in Neon instruction"
msgstr ""
-#: config/tc-arm.c:13889
+#: config/tc-arm.c:14256
msgid "first and second operands shall be the same register"
msgstr ""
-#: config/tc-arm.c:14165
+#: config/tc-arm.c:14532
msgid "scalar out of range for multiply instruction"
msgstr ""
-#: config/tc-arm.c:14341 config/tc-arm.c:14353
+#: config/tc-arm.c:14708 config/tc-arm.c:14720
msgid "immediate out of range for insert"
msgstr ""
-#: config/tc-arm.c:14365 config/tc-arm.c:15533
+#: config/tc-arm.c:14732 config/tc-arm.c:15900
msgid "immediate out of range for shift"
msgstr ""
-#: config/tc-arm.c:14486
+#: config/tc-arm.c:14853
msgid "immediate out of range for narrowing operation"
msgstr ""
-#: config/tc-arm.c:14620
+#: config/tc-arm.c:14987
msgid "operands 0 and 1 must be the same register"
msgstr ""
-#: config/tc-arm.c:14699 config/tc-arm.c:16165
+#: config/tc-arm.c:15066 config/tc-arm.c:16532
msgid "invalid rounding mode"
msgstr ""
-#: config/tc-arm.c:14967
+#: config/tc-arm.c:15334
msgid "operand size must be specified for immediate VMOV"
msgstr ""
-#: config/tc-arm.c:14977
+#: config/tc-arm.c:15344
msgid "immediate has bits set outside the operand size"
msgstr ""
-#: config/tc-arm.c:15142
+#: config/tc-arm.c:15509
msgid "Instruction form not available on this architecture."
msgstr ""
-#: config/tc-arm.c:15186
+#: config/tc-arm.c:15553
msgid "elements must be smaller than reversal region"
msgstr ""
-#: config/tc-arm.c:15367 config/tc-arm.c:15427
+#: config/tc-arm.c:15734 config/tc-arm.c:15794
msgid "bad type for scalar"
msgstr ""
-#: config/tc-arm.c:15491 config/tc-arm.c:15499
+#: config/tc-arm.c:15858 config/tc-arm.c:15866
msgid "VFP registers must be adjacent"
msgstr ""
-#: config/tc-arm.c:15645
+#: config/tc-arm.c:16012
msgid "bad list length for table lookup"
msgstr ""
-#: config/tc-arm.c:15675
+#: config/tc-arm.c:16042
msgid "writeback (!) must be used for VLDMDB and VSTMDB"
msgstr ""
-#: config/tc-arm.c:15678
+#: config/tc-arm.c:16045
msgid "register list must contain at least 1 and at most 16 registers"
msgstr ""
-#: config/tc-arm.c:15703
+#: config/tc-arm.c:16070
msgid "Use of PC here is UNPREDICTABLE"
msgstr ""
-#: config/tc-arm.c:15705
+#: config/tc-arm.c:16072
msgid "Use of PC here is deprecated"
msgstr ""
-#: config/tc-arm.c:15768
+#: config/tc-arm.c:16135
msgid "bad alignment"
msgstr ""
-#: config/tc-arm.c:15785
+#: config/tc-arm.c:16152
msgid "bad list type for instruction"
msgstr ""
-#: config/tc-arm.c:15787
+#: config/tc-arm.c:16154
msgid "bad element type for instruction"
msgstr ""
-#: config/tc-arm.c:15829
+#: config/tc-arm.c:16196
msgid "unsupported alignment for instruction"
msgstr ""
-#: config/tc-arm.c:15848 config/tc-arm.c:15942 config/tc-arm.c:15953
-#: config/tc-arm.c:15963 config/tc-arm.c:15977
+#: config/tc-arm.c:16215 config/tc-arm.c:16309 config/tc-arm.c:16320
+#: config/tc-arm.c:16330 config/tc-arm.c:16344
msgid "bad list length"
msgstr ""
-#: config/tc-arm.c:15853
+#: config/tc-arm.c:16220
msgid "stride of 2 unavailable when element size is 8"
msgstr ""
-#: config/tc-arm.c:15886 config/tc-arm.c:15961
+#: config/tc-arm.c:16253 config/tc-arm.c:16328
msgid "can't use alignment with this instruction"
msgstr ""
-#: config/tc-arm.c:16033
+#: config/tc-arm.c:16400
msgid "post-index must be a register"
msgstr ""
-#: config/tc-arm.c:16035
+#: config/tc-arm.c:16402
msgid "bad register for post-index"
msgstr ""
-#: config/tc-arm.c:16720 config/tc-arm.c:16806
+#: config/tc-arm.c:17087 config/tc-arm.c:17173
msgid "conditional infixes are deprecated in unified syntax"
msgstr ""
-#: config/tc-arm.c:16957
+#: config/tc-arm.c:17324
msgid "Warning: conditional outside an IT block for Thumb."
msgstr ""
-#: config/tc-arm.c:17109
+#: config/tc-arm.c:17476
msgid "Short branches, Undefined, SVC, LDM/STM"
msgstr ""
-#: config/tc-arm.c:17110
+#: config/tc-arm.c:17477
msgid "Miscellaneous 16-bit instructions"
msgstr ""
-#: config/tc-arm.c:17111
+#: config/tc-arm.c:17478
msgid "ADR"
msgstr ""
-#: config/tc-arm.c:17112
+#: config/tc-arm.c:17479
msgid "Literal loads"
msgstr ""
-#: config/tc-arm.c:17113
+#: config/tc-arm.c:17480
msgid "Hi-register ADD, MOV, CMP, BX, BLX using pc"
msgstr ""
-#: config/tc-arm.c:17114
+#: config/tc-arm.c:17481
msgid "Hi-register ADD, MOV, CMP using pc"
msgstr ""
-#: config/tc-arm.c:17133
+#. NOTE: 0x00dd is not the real encoding, instead, it is the 'tvalue'
+#. field in asm_opcode. 'tvalue' is used at the stage this check happen.
+#: config/tc-arm.c:17484
+msgid "ADD/SUB sp, sp #imm"
+msgstr ""
+
+#: config/tc-arm.c:17503
msgid "IT blocks containing 32-bit Thumb instructions are deprecated in ARMv8"
msgstr ""
-#: config/tc-arm.c:17145
+#: config/tc-arm.c:17515
#, c-format
msgid ""
"IT blocks containing 16-bit Thumb instructions of the following class are "
"deprecated in ARMv8: %s"
msgstr ""
-#: config/tc-arm.c:17158
+#: config/tc-arm.c:17528
msgid ""
"IT blocks containing more than one conditional instruction are deprecated in "
"ARMv8"
msgstr ""
-#: config/tc-arm.c:17222
+#: config/tc-arm.c:17592
msgid "s suffix on comparison instruction is deprecated"
msgstr ""
-#: config/tc-arm.c:17241
+#: config/tc-arm.c:17611
#, c-format
msgid "selected processor does not support Thumb mode `%s'"
msgstr ""
-#: config/tc-arm.c:17247
+#: config/tc-arm.c:17617
msgid "Thumb does not support conditional execution"
msgstr ""
-#: config/tc-arm.c:17266
+#: config/tc-arm.c:17636
#, c-format
msgid "selected processor does not support Thumb-2 mode `%s'"
msgstr ""
-#: config/tc-arm.c:17291
+#: config/tc-arm.c:17661
#, c-format
msgid "cannot honor width suffix -- `%s'"
msgstr ""
-#: config/tc-arm.c:17332
+#: config/tc-arm.c:17702
#, c-format
msgid "selected processor does not support ARM mode `%s'"
msgstr ""
-#: config/tc-arm.c:17337
+#: config/tc-arm.c:17707
#, c-format
msgid "width suffixes are invalid in ARM mode -- `%s'"
msgstr ""
-#: config/tc-arm.c:17370
+#: config/tc-arm.c:17740
#, c-format
msgid "attempt to use an ARM instruction on a Thumb-only processor -- `%s'"
msgstr ""
-#: config/tc-arm.c:17387
+#: config/tc-arm.c:17757
#, c-format
msgid "section '%s' finished with an open IT block."
msgstr ""
-#: config/tc-arm.c:17392
+#: config/tc-arm.c:17762
msgid "file finished with an open IT block."
msgstr ""
-#: config/tc-arm.c:20557
+#: config/tc-arm.c:20930
#, c-format
msgid "alignments greater than %d bytes not supported in .text sections."
msgstr ""
-#: config/tc-arm.c:20825 config/tc-ia64.c:3612
+#: config/tc-arm.c:21198 config/tc-ia64.c:3612
#, c-format
msgid "Group section `%s' has no group signature"
msgstr ""
-#: config/tc-arm.c:20870
+#: config/tc-arm.c:21243
msgid "handlerdata in cantunwind frame"
msgstr ""
-#: config/tc-arm.c:20887
+#: config/tc-arm.c:21260
msgid "too many unwind opcodes for personality routine 0"
msgstr ""
-#: config/tc-arm.c:20923
+#: config/tc-arm.c:21291
+msgid "attempt to recreate an unwind entry"
+msgstr ""
+
+#: config/tc-arm.c:21301
msgid "too many unwind opcodes"
msgstr ""
-#: config/tc-arm.c:21525 config/tc-arm.c:21576
+#: config/tc-arm.c:21911 config/tc-arm.c:21962
#, c-format
msgid "symbol %s is in a different section"
msgstr ""
-#: config/tc-arm.c:21527 config/tc-arm.c:21578
+#: config/tc-arm.c:21913 config/tc-arm.c:21964
#, c-format
msgid "symbol %s is weak and may be overridden later"
msgstr ""
-#: config/tc-arm.c:21555 config/tc-arm.c:21897
+#: config/tc-arm.c:21941 config/tc-arm.c:22283
#, c-format
msgid "invalid constant (%lx) after fixup"
msgstr ""
-#: config/tc-arm.c:21611
+#: config/tc-arm.c:21997
#, c-format
msgid "unable to compute ADRL instructions for PC offset of 0x%lx"
msgstr ""
-#: config/tc-arm.c:21646 config/tc-arm.c:21676
+#: config/tc-arm.c:22032 config/tc-arm.c:22062
msgid "invalid literal constant: pool needs to be closer"
msgstr ""
-#: config/tc-arm.c:21649 config/tc-arm.c:21698
+#: config/tc-arm.c:22035 config/tc-arm.c:22084
#, c-format
msgid "bad immediate value for offset (%ld)"
msgstr ""
-#: config/tc-arm.c:21679
+#: config/tc-arm.c:22065
#, c-format
msgid "bad immediate value for 8-bit offset (%ld)"
msgstr ""
-#: config/tc-arm.c:21739
+#: config/tc-arm.c:22125
msgid "offset not a multiple of 4"
msgstr ""
-#: config/tc-arm.c:21913
+#: config/tc-arm.c:22299
msgid "invalid smc expression"
msgstr ""
-#: config/tc-arm.c:21922
+#: config/tc-arm.c:22308
msgid "invalid hvc expression"
msgstr ""
-#: config/tc-arm.c:21933 config/tc-arm.c:21942
+#: config/tc-arm.c:22319 config/tc-arm.c:22328
msgid "invalid swi expression"
msgstr ""
-#: config/tc-arm.c:21952
+#: config/tc-arm.c:22338
msgid "invalid expression in load/store multiple"
msgstr ""
-#: config/tc-arm.c:22013
+#: config/tc-arm.c:22399
#, c-format
msgid "blx to '%s' an ARM ISA state function changed to bl"
msgstr ""
-#: config/tc-arm.c:22032
+#: config/tc-arm.c:22418
msgid "misaligned branch destination"
msgstr ""
-#: config/tc-arm.c:22152
+#: config/tc-arm.c:22538
#, c-format
msgid "blx to Thumb func '%s' from Thumb ISA state changed to bl"
msgstr ""
-#: config/tc-arm.c:22202
+#: config/tc-arm.c:22588
msgid "Thumb2 branch out of range"
msgstr ""
-#: config/tc-arm.c:22291
+#: config/tc-arm.c:22672
msgid "rel31 relocation overflow"
msgstr ""
-#: config/tc-arm.c:22303 config/tc-arm.c:22331
+#: config/tc-arm.c:22684 config/tc-arm.c:22712
msgid "co-processor offset out of range"
msgstr ""
-#: config/tc-arm.c:22348
+#: config/tc-arm.c:22729
#, c-format
msgid "invalid offset, target not word aligned (0x%08lX)"
msgstr ""
-#: config/tc-arm.c: