From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 44104 invoked by alias); 18 Nov 2016 19:20:58 -0000 Mailing-List: contact archer-commits-help@sourceware.org; run by ezmlm Sender: Precedence: bulk List-Post: List-Help: List-Subscribe: Received: (qmail 44047 invoked by uid 9674); 18 Nov 2016 19:20:57 -0000 Date: Fri, 18 Nov 2016 19:20:00 -0000 Message-ID: <20161118192057.43923.qmail@sourceware.org> From: jkratoch@sourceware.org To: archer-commits@sourceware.org Subject: [SCM] users/jkratoch/dwarf5gcc-gdb: Merge branch 'dwarf5gcc-gdb-callsite-macro' into dwarf5gcc-gdb-callsite-macro-data16 X-Git-Refname: refs/heads/users/jkratoch/dwarf5gcc-gdb X-Git-Reftype: branch X-Git-Oldrev: 6f67c9b86a08bd21368962450dac9aa3cc7cea77 X-Git-Newrev: 94fcf1fe5ccdc29f54984f37f2d0fbcd95d6c867 X-SW-Source: 2016-q4/txt/msg00021.txt.bz2 List-Id: The branch, users/jkratoch/dwarf5gcc-gdb has been updated via 94fcf1fe5ccdc29f54984f37f2d0fbcd95d6c867 (commit) via 24ea3d670bb16abc461f3006440b3a411235111b (commit) via 1ea8cf87a0e31d1e4ebb3832ddc1bf29067e7b81 (commit) via a933e669c498ec393bb5a98921e918934280b131 (commit) via 940be4a3470ffdd54cc46e06ca09a07310083f6e (commit) via cedc43950776d9683cb8c88563b6ba0981bedc9e (commit) via 8504e0974cf4b67680a11208b16caa2d3c77b838 (commit) via bb050a6932c4b0ea86202fe62bed2d94999f77ad (commit) via cc133f9f118ef4afd93da0ecba48151488c41c74 (commit) via a85db0a6188b89ef49a1bd0f0ed435adc133b3ae (commit) via 535aade664ac4170fe82e52c9addd686156220a1 (commit) via ddc5804ebd4b2be29ad4e3e259f5c6e907f34f26 (commit) via 1706852c3c6c1d39f949c933d37647d02509b9cb (commit) via 59d2699cfd30f9defc454be17415c0a518ece32b (commit) via a4ddf8dc72f0ac10c3459a91949eb1bdb07ed10d (commit) via 4d17eaece8b31e642acaf4d77fe961ad8e3aaf50 (commit) via ef0f5d7cc3b2082c94beffa7c9c1a8acd8eaa427 (commit) via aba19b625f34fb3d61263fe8044cf0c6d8804570 (commit) via 9d2cdc86574bda0f1013be8cdc166d86b6d032bc (commit) via c2c4ff8d52a2cd3263a547b0384692498714aa1b (commit) via 28617675c264213180a599bb4327bf162029636a (commit) via ccfc90a39b78b7bc4173cd9ead49d2aa59695378 (commit) via 3f06e55061d0d8f72dfd11f6c432c23f45d9b597 (commit) via 6ec49e7c0aeb6d98e379319b565aee2c89388615 (commit) via cd42d70b4d7e92dcc6c533e012ab8af122de7b9e (commit) via 23beba32dc3031279641e032855bc1fd41768851 (commit) via 470dd0a647c95a2e88c5b0f8df538826b08959a8 (commit) via 5443506ee45cb94769db7e76dd2021a96f2f0680 (commit) via 3b165252e882c05c8217f888194877224295592d (commit) via f2ff9acd32b4667ee16a03ca8d10fd8b99e22f46 (commit) via 66be918f5f9f78d74c70aa332756286ff9d0ccf2 (commit) via 7c2683c40f745397e80b6df4edf8265ecb6fd194 (commit) via 2f45d5e77c1e23f582b2cb41c1bc62cef0d8d6a2 (commit) via 200069c74f42ffcc726b9995a46971a86286a256 (commit) via 19f1935d91bfabbe4176ffdaca95bc789b593153 (commit) via fa98319231a95aca0313878443143d3f92aca5e1 (commit) via 256ae5dbc73d1348850f86ee77a0dc3b04bc7cc0 (commit) via 33cc7d368f420326606695daafd6292e2779c6af (commit) via 41b56feb5063aee4fefb4a991eb796d1e8a7475e (commit) via df433d316277ff5293832d3cd6cbc30b5c38dec0 (commit) via 1a2f3d7ff1d79b1290704e48c71e905b987393a6 (commit) from 6f67c9b86a08bd21368962450dac9aa3cc7cea77 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 94fcf1fe5ccdc29f54984f37f2d0fbcd95d6c867 Merge: 2f45d5e 24ea3d6 Author: Jan Kratochvil Date: Fri Nov 18 20:20:32 2016 +0100 Merge branch 'dwarf5gcc-gdb-callsite-macro' into dwarf5gcc-gdb-callsite-macro-data16 commit 24ea3d670bb16abc461f3006440b3a411235111b Merge: 84fd5bc 1ea8cf8 Author: Jan Kratochvil Date: Fri Nov 18 20:20:31 2016 +0100 Merge branch 'dwarf5gcc-gdb-callsite' into dwarf5gcc-gdb-callsite-macro commit 1ea8cf87a0e31d1e4ebb3832ddc1bf29067e7b81 Merge: 12df202 a933e66 Author: Jan Kratochvil Date: Fri Nov 18 20:20:30 2016 +0100 Merge branch 'dwarf5gcc-gdb' into dwarf5gcc-gdb-callsite commit a933e669c498ec393bb5a98921e918934280b131 Merge: cedc439 940be4a Author: Jan Kratochvil Date: Fri Nov 18 20:20:28 2016 +0100 Merge branch 'dwarf5gcc' into dwarf5gcc-gdb commit cedc43950776d9683cb8c88563b6ba0981bedc9e Author: Jan Kratochvil Date: Fri Nov 18 20:19:33 2016 +0100 . commit 23beba32dc3031279641e032855bc1fd41768851 Author: Jan Kratochvil Date: Thu Nov 17 20:54:39 2016 +0100 . commit 2f45d5e77c1e23f582b2cb41c1bc62cef0d8d6a2 Author: Jan Kratochvil Date: Thu Nov 17 10:42:14 2016 +0100 . ----------------------------------------------------------------------- Summary of changes: bfd/ChangeLog | 14 + bfd/elf32-metag.c | 11 +- bfd/elfxx-sparc.c | 22 +- bfd/version.h | 2 +- binutils/ChangeLog | 4 + binutils/cxxfilt.c | 1 + binutils/dwarf.c | 43 +- gas/ChangeLog | 56 + gas/config/tc-aarch64.c | 24 + gas/config/tc-arc.c | 77 +- gas/testsuite/gas/aarch64/advsimd-armv8_3.d | 33 + gas/testsuite/gas/aarch64/advsimd-armv8_3.s | 36 + gas/testsuite/gas/aarch64/fp-armv8_3.d | 10 + gas/testsuite/gas/aarch64/fp-armv8_3.s | 5 + gas/testsuite/gas/aarch64/illegal-fcmla.d | 2 + gas/testsuite/gas/aarch64/illegal-fcmla.l | 17 + gas/testsuite/gas/aarch64/illegal-fcmla.s | 25 + gas/testsuite/gas/aarch64/illegal-fjcvtzs.d | 2 + gas/testsuite/gas/aarch64/illegal-fjcvtzs.l | 8 + gas/testsuite/gas/aarch64/illegal-fjcvtzs.s | 14 + gas/testsuite/gas/aarch64/illegal-ldapr.d | 2 + gas/testsuite/gas/aarch64/illegal-ldapr.l | 16 + gas/testsuite/gas/aarch64/illegal-ldapr.s | 25 + gas/testsuite/gas/aarch64/illegal-ldraa.d | 2 + gas/testsuite/gas/aarch64/illegal-ldraa.l | 35 + gas/testsuite/gas/aarch64/illegal-ldraa.s | 44 + gas/testsuite/gas/aarch64/illegal-nofp-armv8_3.d | 2 + gas/testsuite/gas/aarch64/illegal-nofp-armv8_3.l | 3 + gas/testsuite/gas/aarch64/illegal-nofp-armv8_3.s | 6 + gas/testsuite/gas/aarch64/ldst-exclusive-armv8_3.d | 20 + gas/testsuite/gas/aarch64/ldst-exclusive-armv8_3.s | 22 + gas/testsuite/gas/aarch64/pac.d | 22 + gas/testsuite/gas/aarch64/pac.s | 23 + gas/testsuite/gas/arc/cl-warn.s | 5 + gas/testsuite/gas/arc/cpu-pseudop-1.d | 12 + gas/testsuite/gas/arc/cpu-pseudop-1.s | 6 + gas/testsuite/gas/arc/cpu-pseudop-2.d | 11 + gas/testsuite/gas/arc/cpu-pseudop-2.s | 5 + gas/testsuite/gas/arc/cpu-warn2.s | 4 + gdb/ChangeLog | 290 ++ gdb/Makefile.in | 835 +---- gdb/NEWS | 5 + gdb/ada-lang.c | 14 +- gdb/c-exp.y | 28 +- gdb/configure | 97 - gdb/configure.ac | 11 - gdb/ctf.c | 5 - gdb/doc/ChangeLog | 5 + gdb/doc/gdb.texinfo | 2 +- gdb/dwarf2loc.c | 21 +- gdb/dwarf2read.c | 415 +- gdb/findvar.c | 26 +- gdb/frame-unwind.c | 3 +- gdb/frame.c | 121 +- gdb/frame.h | 16 +- gdb/gdbserver/ChangeLog | 13 + gdb/gdbserver/Makefile.in | 36 +- gdb/gdbserver/configure | 97 - gdb/gdbserver/configure.ac | 11 - gdb/python/py-unwind.c | 7 +- gdb/sentinel-frame.c | 2 +- gdb/testsuite/ChangeLog | 18 + gdb/testsuite/Makefile.in | 88 +- gdb/testsuite/configure | 99 - gdb/testsuite/configure.ac | 11 - gdb/testsuite/gdb.python/py-recurse-unwind.c | 6 +- gdb/testsuite/gdb.python/py-recurse-unwind.exp | 63 +- gdb/testsuite/gdb.python/py-recurse-unwind.py | 29 +- gdb/tracepoint.c | 60 +- gdb/tracepoint.h | 3 +- gdb/valarith.c | 2 +- gdb/valops.c | 13 +- gdb/value.c | 47 +- gdb/value.h | 16 +- include/ChangeLog | 28 + include/demangle.h | 33 +- include/opcode/aarch64.h | 7 + libiberty/ChangeLog | 66 + libiberty/Makefile.in | 13 + libiberty/configure | 3 +- libiberty/configure.ac | 3 +- libiberty/cp-demangle.c | 197 +- libiberty/cplus-dem.c | 69 +- libiberty/hashtab.c | 20 +- libiberty/regex.c | 8 +- libiberty/rust-demangle.c | 348 ++ libiberty/testsuite/Makefile.in | 7 +- libiberty/testsuite/demangle-expected | 47 + libiberty/testsuite/rust-demangle-expected | 161 + opcodes/ChangeLog | 50 + opcodes/aarch64-asm-2.c | 1038 +++--- opcodes/aarch64-asm.c | 74 +- opcodes/aarch64-asm.h | 2 + opcodes/aarch64-dis-2.c | 4551 ++++++++++---------- opcodes/aarch64-dis.c | 63 + opcodes/aarch64-dis.h | 2 + opcodes/aarch64-opc-2.c | 117 +- opcodes/aarch64-opc.c | 64 +- opcodes/aarch64-opc.h | 4 + opcodes/aarch64-tbl.h | 54 + 100 files changed, 5744 insertions(+), 4471 deletions(-) create mode 100644 gas/testsuite/gas/aarch64/advsimd-armv8_3.d create mode 100644 gas/testsuite/gas/aarch64/advsimd-armv8_3.s create mode 100644 gas/testsuite/gas/aarch64/fp-armv8_3.d create mode 100644 gas/testsuite/gas/aarch64/fp-armv8_3.s create mode 100644 gas/testsuite/gas/aarch64/illegal-fcmla.d create mode 100644 gas/testsuite/gas/aarch64/illegal-fcmla.l create mode 100644 gas/testsuite/gas/aarch64/illegal-fcmla.s create mode 100644 gas/testsuite/gas/aarch64/illegal-fjcvtzs.d create mode 100644 gas/testsuite/gas/aarch64/illegal-fjcvtzs.l create mode 100644 gas/testsuite/gas/aarch64/illegal-fjcvtzs.s create mode 100644 gas/testsuite/gas/aarch64/illegal-ldapr.d create mode 100644 gas/testsuite/gas/aarch64/illegal-ldapr.l create mode 100644 gas/testsuite/gas/aarch64/illegal-ldapr.s create mode 100644 gas/testsuite/gas/aarch64/illegal-ldraa.d create mode 100644 gas/testsuite/gas/aarch64/illegal-ldraa.l create mode 100644 gas/testsuite/gas/aarch64/illegal-ldraa.s create mode 100644 gas/testsuite/gas/aarch64/illegal-nofp-armv8_3.d create mode 100644 gas/testsuite/gas/aarch64/illegal-nofp-armv8_3.l create mode 100644 gas/testsuite/gas/aarch64/illegal-nofp-armv8_3.s create mode 100644 gas/testsuite/gas/aarch64/ldst-exclusive-armv8_3.d create mode 100644 gas/testsuite/gas/aarch64/ldst-exclusive-armv8_3.s create mode 100644 gas/testsuite/gas/arc/cl-warn.s create mode 100644 gas/testsuite/gas/arc/cpu-pseudop-1.d create mode 100644 gas/testsuite/gas/arc/cpu-pseudop-1.s create mode 100644 gas/testsuite/gas/arc/cpu-pseudop-2.d create mode 100644 gas/testsuite/gas/arc/cpu-pseudop-2.s create mode 100644 gas/testsuite/gas/arc/cpu-warn2.s create mode 100644 libiberty/rust-demangle.c create mode 100644 libiberty/testsuite/rust-demangle-expected First 500 lines of diff: diff --git a/bfd/ChangeLog b/bfd/ChangeLog index fcc5b1c..8a18a6d 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,17 @@ +2016-11-18 James Clarke + + * elfxx-sparc.c (_bfd_sparc_elf_relocate_section): Don't convert + R_SPARC_GOTDATA_OP_HIX22 and R_SPARC_GOTDATA_OP_LOX10 to + R_SPARC_GOT* for non-local references. Instead, treat them like + R_SPARC_GOTDATA_HIX22/R_SPARC_GOTDATA_LOX10 when filling in the + immediate with the calculated relocation. + +2016-11-18 Nick Clifton + + PR ld/20675 + * elf32-metag.c (elf_metag_relocate_section): Replace abort with + an informative error message. + 2016-11-15 Senthil Kumar Selvaraj PR ld/20789 diff --git a/bfd/elf32-metag.c b/bfd/elf32-metag.c index 1557a37..ac78324 100644 --- a/bfd/elf32-metag.c +++ b/bfd/elf32-metag.c @@ -1820,7 +1820,7 @@ elf_metag_relocate_section (bfd *output_bfd, } if (tls_type == GOT_UNKNOWN) - abort(); + abort (); if ((off & 1) != 0) off &= ~1; @@ -1880,7 +1880,14 @@ elf_metag_relocate_section (bfd *output_bfd, else { /* We don't support changing the TLS model. */ - abort (); + /* PR 20675 */ + if (bfd_link_pic (info)) + _bfd_error_handler (_("%B(%A): multiple TLS models are not supported"), + input_bfd, input_section, name); + else + _bfd_error_handler (_("%B(%A): shared library symbol %s encountered whilst performing a static link"), + input_bfd, input_section, name); + return FALSE; } cur_off += 8; diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c index db8058f..e1c7b22 100644 --- a/bfd/elfxx-sparc.c +++ b/bfd/elfxx-sparc.c @@ -3164,14 +3164,12 @@ _bfd_sparc_elf_relocate_section (bfd *output_bfd, case R_SPARC_GOTDATA_OP_HIX22: case R_SPARC_GOTDATA_OP_LOX10: if (SYMBOL_REFERENCES_LOCAL (info, h)) - r_type = (r_type == R_SPARC_GOTDATA_OP_HIX22 - ? R_SPARC_GOTDATA_HIX22 - : R_SPARC_GOTDATA_LOX10); - else - r_type = (r_type == R_SPARC_GOTDATA_OP_HIX22 - ? R_SPARC_GOT22 - : R_SPARC_GOT10); - howto = _bfd_sparc_elf_howto_table + r_type; + { + r_type = (r_type == R_SPARC_GOTDATA_OP_HIX22 + ? R_SPARC_GOTDATA_HIX22 + : R_SPARC_GOTDATA_LOX10); + howto = _bfd_sparc_elf_howto_table + r_type; + } break; case R_SPARC_GOTDATA_OP: @@ -3193,6 +3191,8 @@ _bfd_sparc_elf_relocate_section (bfd *output_bfd, relocation = gdopoff (info, relocation); break; + case R_SPARC_GOTDATA_OP_HIX22: + case R_SPARC_GOTDATA_OP_LOX10: case R_SPARC_GOT10: case R_SPARC_GOT13: case R_SPARC_GOT22: @@ -4017,7 +4017,8 @@ _bfd_sparc_elf_relocate_section (bfd *output_bfd, r = bfd_reloc_ok; } else if (r_type == R_SPARC_HIX22 - || r_type == R_SPARC_GOTDATA_HIX22) + || r_type == R_SPARC_GOTDATA_HIX22 + || r_type == R_SPARC_GOTDATA_OP_HIX22) { bfd_vma x; @@ -4036,7 +4037,8 @@ _bfd_sparc_elf_relocate_section (bfd *output_bfd, relocation); } else if (r_type == R_SPARC_LOX10 - || r_type == R_SPARC_GOTDATA_LOX10) + || r_type == R_SPARC_GOTDATA_LOX10 + || r_type == R_SPARC_GOTDATA_OP_LOX10) { bfd_vma x; diff --git a/bfd/version.h b/bfd/version.h index e6f720e..c74b66c 100644 --- a/bfd/version.h +++ b/bfd/version.h @@ -1,4 +1,4 @@ -#define BFD_VERSION_DATE 20161116 +#define BFD_VERSION_DATE 20161118 #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/ChangeLog b/binutils/ChangeLog index 3347bdb..bbeec9c 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,7 @@ +2016-11-16 Mark Wielaard + + * cxxfilt.c (main): Recognize rust_demangling. + 2016-11-14 Rudy PR binutils/20814 diff --git a/binutils/cxxfilt.c b/binutils/cxxfilt.c index d5863ee..21e5b0d 100644 --- a/binutils/cxxfilt.c +++ b/binutils/cxxfilt.c @@ -241,6 +241,7 @@ main (int argc, char **argv) case gnat_demangling: case gnu_v3_demangling: case dlang_demangling: + case rust_demangling: case auto_demangling: valid_symbols = standard_symbol_characters (); break; diff --git a/binutils/dwarf.c b/binutils/dwarf.c index 441ace7..fe07dd4 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -2460,9 +2460,13 @@ process_debug_info (struct dwarf_section *section, this_set = find_cu_tu_set_v2 (cu_offset, do_types); - if (compunit.cu_version >= 5) + if (compunit.cu_version < 5) + compunit.cu_unit_type = DW_UT_compile; + else { SAFE_BYTE_GET_AND_INC (compunit.cu_unit_type, hdrptr, 1, end); + if (compunit.cu_unit_type == DW_UT_type) + do_types = 1; SAFE_BYTE_GET_AND_INC (compunit.cu_pointer_size, hdrptr, 1, end); } @@ -2491,29 +2495,19 @@ process_debug_info (struct dwarf_section *section, compunit.cu_pointer_size = offset_size; } - if (compunit.cu_version >= 5) - { - dwarf_vma padding1_high, padding1_low; - dwarf_vma padding2; - - SAFE_BYTE_GET64 (hdrptr, &padding1_high, &padding1_low, end); - hdrptr += 8; - if (padding1_high != 0 || padding1_low != 0) - warn (_("Invalid padding1 (high %s, low %s) in compunit header\n"), - dwarf_vmatoa ("x", padding1_high), - dwarf_vmatoa ("x", padding1_low)); - - SAFE_BYTE_GET_AND_INC (padding2, hdrptr, offset_size, end); - if (padding2 != 0) - warn (_("Invalid padding2 (%s) in compunit header\n"), - dwarf_vmatoa ("x", padding2)); - } - - if (do_types) + if (compunit.cu_version >= 5 || do_types) { SAFE_BYTE_GET64 (hdrptr, &signature_high, &signature_low, end); hdrptr += 8; + if (!do_types && (signature_high != 0 || signature_low != 0)) + warn (_("Invalid signature (high %s, low %s) in compunit header\n"), + dwarf_vmatoa ("x", signature_high), + dwarf_vmatoa ("x", signature_low)); + SAFE_BYTE_GET_AND_INC (type_offset, hdrptr, offset_size, end); + if (!do_types && type_offset != 0) + warn (_("Invalid type_offset (%s) in compunit header\n"), + dwarf_vmatoa ("x", type_offset)); } if ((do_loc || do_debug_loc || do_debug_ranges) @@ -2610,6 +2604,15 @@ process_debug_info (struct dwarf_section *section, continue; } + if (compunit.cu_unit_type != DW_UT_compile + && compunit.cu_unit_type != DW_UT_type) + { + warn (_("CU at offset %s contains corrupt or " + "unsupported unit type: %d.\n"), + dwarf_vmatoa ("x", cu_offset), compunit.cu_unit_type); + continue; + } + free_abbrevs (); /* Process the abbrevs used by this compilation unit. */ diff --git a/gas/ChangeLog b/gas/ChangeLog index 613833b..c95decc 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,59 @@ +2016-11-18 Claudiu Zissulescu + + * testsuite/gas/arc/cl-warn.s: New file. + * testsuite/gas/arc/cpu-pseudop-1.d: Likewise. + * testsuite/gas/arc/cpu-pseudop-1.s: Likewise. + * testsuite/gas/arc/cpu-pseudop-2.d: Likewise. + * testsuite/gas/arc/cpu-pseudop-2.s: Likewise. + * testsuite/gas/arc/cpu-warn2.s: Likewise. + * config/tc-arc.c (selected_cpu): Initialize. + (feature_type): New struct. + (feature_list): New variable. + (arc_check_feature): New function. + (arc_select_cpu): Check for .cpu duplicates. Don't overwrite the + current cpu features. Check if a feature is available for a given + cpu. + (md_parse_option): Test if features are available for a given cpu. + +2016-11-18 Szabolcs Nagy + + * config/tc-aarch64.c (parse_operands): Handle AARCH64_OPND_IMM_ROT*. + * testsuite/gas/aarch64/advsimd-armv8_3.d: New. + * testsuite/gas/aarch64/advsimd-armv8_3.s: New. + * testsuite/gas/aarch64/illegal-fcmla.s: New. + * testsuite/gas/aarch64/illegal-fcmla.l: New. + * testsuite/gas/aarch64/illegal-fcmla.d: New. + +2016-11-18 Szabolcs Nagy + + * testsuite/gas/aarch64/ldst-exclusive-armv8_3.s: Add ldaprb, ldaprh, ldapr tests. + * testsuite/gas/aarch64/ldst-exclusive-armv8_3.d: Likewise. + * testsuite/gas/aarch64/illegal-ldapr.s: Likewise. + * testsuite/gas/aarch64/illegal-ldapr.d: Likewise. + * testsuite/gas/aarch64/illegal-ldapr.l: Likewise. + +2016-11-18 Szabolcs Nagy + + * testsuite/gas/aarch64/fp-armv8_3.s: Add fjcvtzs test. + * testsuite/gas/aarch64/fp-armv8_3.d: Likewise. + * testsuite/gas/aarch64/illegal-fjcvtzs.s: Likewise. + * testsuite/gas/aarch64/illegal-fjcvtzs.d: Likewise. + * testsuite/gas/aarch64/illegal-fjcvtzs.l: Likewise. + * testsuite/gas/aarch64/illegal-nofp-armv8_3.s: Likewise. + * testsuite/gas/aarch64/illegal-nofp-armv8_3.d: Likewise. + * testsuite/gas/aarch64/illegal-nofp-armv8_3.l: Likewise. + +2016-11-18 Szabolcs Nagy + + * config/tc-aarch64.c (parse_operands): Handle AARCH64_OPND_ADDR_SIMM10. + (fix_insn): Likewise. + (warn_unpredictable_ldst): Handle ldst_imm10. + * testsuite/gas/aarch64/pac.s: Add ldraa and ldrab tests. + * testsuite/gas/aarch64/pac.d: Likewise. + * testsuite/gas/aarch64/illegal-ldraa.s: New. + * testsuite/gas/aarch64/illegal-ldraa.l: New. + * testsuite/gas/aarch64/illegal-ldraa.d: New. + 2016-11-15 Nick Clifton PR gas/20803 diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index e65daa0..7c518c7 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -5561,6 +5561,9 @@ parse_operands (char *str, const aarch64_opcode *opcode) case AARCH64_OPND_SVE_UIMM7: case AARCH64_OPND_SVE_UIMM8: case AARCH64_OPND_SVE_UIMM8_53: + case AARCH64_OPND_IMM_ROT1: + case AARCH64_OPND_IMM_ROT2: + case AARCH64_OPND_IMM_ROT3: po_imm_nc_or_fail (); info->imm.value = val; break; @@ -6024,6 +6027,25 @@ parse_operands (char *str, const aarch64_opcode *opcode) /* skip_p */ 0); break; + case AARCH64_OPND_ADDR_SIMM10: + po_misc_or_fail (parse_address (&str, info)); + if (info->addr.pcrel || info->addr.offset.is_reg + || !info->addr.preind || info->addr.postind) + { + set_syntax_error (_("invalid addressing mode")); + goto failure; + } + if (inst.reloc.type != BFD_RELOC_UNUSED) + { + set_syntax_error (_("relocation not allowed")); + goto failure; + } + assign_imm_if_const_or_fixup_later (&inst.reloc, info, + /* addr_off_p */ 1, + /* need_libopcodes_p */ 1, + /* skip_p */ 0); + break; + case AARCH64_OPND_ADDR_UIMM12: po_misc_or_fail (parse_address (&str, info)); if (info->addr.pcrel || info->addr.offset.is_reg @@ -6481,6 +6503,7 @@ warn_unpredictable_ldst (aarch64_instruction *instr, char *str) { case ldst_pos: case ldst_imm9: + case ldst_imm10: case ldst_unscaled: case ldst_unpriv: /* Loading/storing the base register is unpredictable if writeback. */ @@ -7350,6 +7373,7 @@ fix_insn (fixS *fixP, uint32_t flags, offsetT value) case AARCH64_OPND_ADDR_SIMM7: case AARCH64_OPND_ADDR_SIMM9: case AARCH64_OPND_ADDR_SIMM9_2: + case AARCH64_OPND_ADDR_SIMM10: case AARCH64_OPND_ADDR_UIMM12: /* Immediate offset in an address. */ insn = get_aarch64_insn (buf); diff --git a/gas/config/tc-arc.c b/gas/config/tc-arc.c index 06aee48..376ac43 100644 --- a/gas/config/tc-arc.c +++ b/gas/config/tc-arc.c @@ -451,7 +451,23 @@ static const struct cpu_type }; /* Information about the cpu/variant we're assembling for. */ -static struct cpu_type selected_cpu; +static struct cpu_type selected_cpu = { 0, 0, 0, 0, 0 }; + +/* A table with options. */ +static const struct feature_type +{ + unsigned feature; + unsigned cpus; + const char *name; +} + feature_list[] = +{ + { ARC_CD, ARC_OPCODE_ARCV2, "code-density" }, + { ARC_NPS400, ARC_OPCODE_ARC700, "nps400" }, + { ARC_SPFP, ARC_OPCODE_ARCFPX, "single-precision FPX" }, + { ARC_DPFP, ARC_OPCODE_ARCFPX, "double-precision FPX" }, + { ARC_FPUDA, ARC_OPCODE_ARCv2EM, "double assist FP" } +}; /* Used by the arc_reloc_op table. Order is important. */ #define O_gotoff O_md1 /* @gotoff relocation. */ @@ -775,6 +791,27 @@ md_number_to_chars_midend (char *buf, unsigned long long val, int n) } } +/* Check if a feature is allowed for a specific CPU. */ + +static void +arc_check_feature (void) +{ + unsigned i; + + if (!selected_cpu.features + || !selected_cpu.name) + return; + for (i = 0; (i < ARRAY_SIZE (feature_list)); i++) + { + if ((selected_cpu.features & feature_list[i].feature) + && !(selected_cpu.flags & feature_list[i].cpus)) + { + as_bad (_("invalid %s option for %s cpu"), feature_list[i].name, + selected_cpu.name); + } + } +} + /* Select an appropriate entry from CPU_TYPES based on ARG and initialise the relevant static global variables. Parameter SEL describes where this selection originated from. */ @@ -790,6 +827,10 @@ arc_select_cpu (const char *arg, enum mach_selection_type sel) gas_assert (sel != MACH_SELECTION_FROM_DEFAULT || mach_selection_mode == MACH_SELECTION_NONE); + if ((mach_selection_mode == MACH_SELECTION_FROM_CPU_DIRECTIVE) + && (sel == MACH_SELECTION_FROM_CPU_DIRECTIVE)) + as_bad (_("Multiple .cpu directives found")); + /* Look for a matching entry in CPU_TYPES array. */ for (i = 0; cpu_types[i].name; ++i) { @@ -807,22 +848,25 @@ arc_select_cpu (const char *arg, enum mach_selection_type sel) && selected_cpu.mach != cpu_types[i].mach) { as_warn (_("Command-line value overrides \".cpu\" directive")); - return; } + return; } - /* Initialise static global data about selected machine type. */ - selected_cpu.flags = cpu_types[i].flags; - selected_cpu.name = cpu_types[i].name; - selected_cpu.features = cpu_types[i].features; - selected_cpu.mach = cpu_types[i].mach; - cpu_flags = cpu_types[i].eflags; + /* Initialise static global data about selected machine type. */ + selected_cpu.flags = cpu_types[i].flags; + selected_cpu.name = cpu_types[i].name; + selected_cpu.features |= cpu_types[i].features; + selected_cpu.mach = cpu_types[i].mach; + cpu_flags = cpu_types[i].eflags; break; } } if (!cpu_types[i].name) as_fatal (_("unknown architecture: %s\n"), arg); + + /* Check if set features are compatible with the chosen CPU. */ + arc_check_feature (); gas_assert (cpu_flags != 0); selected_cpu.eflags = (arc_initial_eflag & ~EF_ARC_MACH_MSK) | cpu_flags; mach_selection_mode = sel; @@ -3304,11 +3348,8 @@ md_parse_option (int c, const char *arg ATTRIBUTE_UNUSED) break; case OPTION_CD: - /* This option has an effect only on ARC EM. */ - if (selected_cpu.flags & ARC_OPCODE_ARCv2EM) - selected_cpu.features |= ARC_CD; - else - as_warn (_("Code density option invalid for selected CPU")); + selected_cpu.features |= ARC_CD; + arc_check_feature (); break; case OPTION_RELAX: @@ -3317,22 +3358,22 @@ md_parse_option (int c, const char *arg ATTRIBUTE_UNUSED) case OPTION_NPS400: selected_cpu.features |= ARC_NPS400; + arc_check_feature (); break; case OPTION_SPFP: selected_cpu.features |= ARC_SPFP; + arc_check_feature (); break; case OPTION_DPFP: selected_cpu.features |= ARC_DPFP; + arc_check_feature (); break; case OPTION_FPUDA: - /* This option has an effect only on ARC EM. */ - if (selected_cpu.flags & ARC_OPCODE_ARCv2EM) - selected_cpu.features |= ARC_FPUDA; - else - as_warn (_("FPUDA invalid for selected CPU")); + selected_cpu.features |= ARC_FPUDA; + arc_check_feature (); break; /* Dummy options are accepted but have no effect. */ diff --git a/gas/testsuite/gas/aarch64/advsimd-armv8_3.d b/gas/testsuite/gas/aarch64/advsimd-armv8_3.d new file mode 100644 index 0000000..0e477e4 --- /dev/null +++ b/gas/testsuite/gas/aarch64/advsimd-armv8_3.d @@ -0,0 +1,33 @@ +#as: -march=armv8.3-a +#objdump: -dr + +.*: file format .* + +Disassembly of section \.text: + +0000000000000000 <.*>: +[^:]+: 6ec3c441 fcmla v1.2d, v2.2d, v3.2d, #0 +[^:]+: 6ec3cc41 fcmla v1.2d, v2.2d, v3.2d, #90 +[^:]+: 6ec3d441 fcmla v1.2d, v2.2d, v3.2d, #180 +[^:]+: 6ec3dc41 fcmla v1.2d, v2.2d, v3.2d, #270 +[^:]+: 2e83cc41 fcmla v1.2s, v2.2s, v3.2s, #90 +[^:]+: 6e83cc41 fcmla v1.4s, v2.4s, v3.4s, #90 +[^:]+: 2e43cc41 fcmla v1.4h, v2.4h, v3.4h, #90 +[^:]+: 6e43cc41 fcmla v1.8h, v2.8h, v3.8h, #90 +[^:]+: 6f831041 fcmla v1.4s, v2.4s, v3.s\[0\], #0 +[^:]+: 6f833041 fcmla v1.4s, v2.4s, v3.s\[0\], #90 hooks/post-receive -- Repository for Project Archer.