aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2018-01-27Avoid compilation warning in libiberty/simple-object-xcoff.cEli Zaretskii2-5/+17
gdb/ChangeLog: 2018-01-27 Eli Zaretskii <eliz@gnu.org> * simple-object-xcoff.c (simple_object_xcoff_find_sections): Avoid compilation warning in 32-bit builds not supported by AC_SYS_LARGEFILE.
2018-01-27Updated Russian translation for the bfd sub-directoryNick Clifton2-1501/+993
2018-01-27Automatic date update in version.inGDB Administrator1-1/+1
2018-01-26MIPS/LD: Correct `mips-*-windiss' target emulation configurationMaciej W. Rozycki2-0/+6
Fix an issue with commit 73934d319dae ("Disable .gnu.hash on MIPS targets"), <https://sourceware.org/ml/binutils/2006-07/msg00341.html>, which in turn caused a regression with commit 861fb55ab50a ("Defer allocation of R_MIPS_REL32 GOT slots"), <https://sourceware.org/ml/binutils/2008-08/msg00096.html>, and use `mipself.em' as the extra emulation file for `mips-*-windiss' targets, removing a segmentation fault triggered as `_bfd_mips_elf_final_link' calls `htab_traverse' to process LA25 stubs with `htab->la25_stubs' being NULL. This is in turn due to `_bfd_mips_elf_init_stubs' not having been called, which is only done by `mipself.em'. No LA25 stubs are supposed to be produced for `mips-*-windiss' targets, however the internal data structures have to be initialized. ld/ * emulparams/elf32mipswindiss.sh (EXTRA_EM_FILE): Set to `mipself'.
2018-01-26MIPS/GAS: Correct `mips-*-windiss' target emulation configurationMaciej W. Rozycki2-0/+6
Fix a commit 0a44bf6950b3 ("mips-vxworks support"), <https://sourceware.org/ml/binutils/2006-03/msg00179.html>, regression and override the choice of the `vxworks' target environment introduced with commit ea3eed15006f ("Add generic vxworks GAS target."), <https://sourceware.org/ml/binutils/2005-01/msg00052.html>, for `mips-*-windiss' targets as they have not been converted to the VxWorks target format introduced with the former commit, removing a GAS target format selection failure: Assembler messages: Fatal error: selected target format 'elf32-bigmips-vxworks' unknown on any assembly attempt with `mips-windiss' and equivalent target configurations. gas/ * configure.tgt: Use generic emulation for `mips-*-windiss', overriding the blanket choice made for `*-*-windiss'.
2018-01-26MIPS/GAS: Correct `mips-*-sysv4*' target emulation configurationMaciej W. Rozycki2-1/+6
Use `mips-*-sysv4*' rather than `mips-*-sysv4*MP*' to match the system type for System V Release 4 MIPS targets, removing a GAS target selection failure: Assembler messages: Fatal error: selected target format 'elf32-bigmips' unknown on any assembly attempt with `mips-sysv4' and equivalent target configurations. These would typically be called `mips-sni-sysv4' (Sinix) vs `mips-dde-sysv4.2MP' (Supermax). This corrects commit 8614eeee67f9 ("Traditional MIPS patches"), <https://sourceware.org/ml/binutils/2000-07/msg00018.html>, making GAS target selection match commit dd745cfae548 ("Traditional MIPS patches"), <https://sourceware.org/ml/binutils/2000-07/msg00018.html>, and commit 3548145dcbf6 ("Traditional MIPS patches"), <https://sourceware.org/ml/binutils/2000-07/msg00018.html>, which added support for these targets to BFD and LD respectively. gas/ * configure.tgt: Use `mips-*-sysv4*' rather than `mips-*-sysv4*MP*'.
2018-01-26Add myself as a write-after-approval GDB maintainer.Alan Hayward2-1/+5
gdb/ * MAINTAINERS (Write After Approval): Add Alan Hayward.
2018-01-26Add myself as a write-after-approval GDB maintainer.Alan Hayward2-0/+5
gdb/ * MAINTAINERS (Write After Approval): Add Alan Hayward.
2018-01-26Update notes on making a releaseNick Clifton2-24/+46
2018-01-26PowerPC PLT stub matchingAlan Modra5-42/+83
This patch fixes a number of bugs in ppc32 plt stub matching code. 1) The 4-insn stubs for shared libs and PIEs weren't matched. 2) The executable stub miscalculated PLT entry address (by oring a sign-extended quantity rather than adding). 3) Comments were not accurate. In addition, the insn arrays are made const. * ppc-linux-tdep.c (powerpc32_plt_stub): Make const. (powerpc32_plt_stub_so_1): Rename from powerpc32_plt_stub_so. Remove nop. Make const. Comment. (powerpc32_plt_stub_so_2): New. (POWERPC32_PLT_CHECK_LEN): Rename from POWERPC32_PLT_STUB_LEN. Correct count. Update uses. (ppc_skip_trampoline_code): Match powerpc32_plt_stub_so_2 too. Move common code reading PLT entry word. Correct powerpc32_plt_stub PLT address calculation. * ppc64-tdep.c (ppc64_standard_linkage1): Make const. (ppc64_standard_linkage2, ppc64_standard_linkage3): Likewise. (ppc64_standard_linkage4, ppc64_standard_linkage5): Likewise. (ppc64_standard_linkage6, ppc64_standard_linkage7): Likewise. (ppc64_standard_linkage8): Likewise. * rs6000-tdep.c (ppc_insns_match_pattern): Make pattern const. Correct insns description. * ppc-tdep.h (ppc_insns_match_pattern): Update prototype. Reviewed-By: Yao Qi <qiyaoltc@gmail.com>
2018-01-26Define __start/__stop symbols when there is only a dynamic defAlan Modra2-1/+6
This patch fixes a case where a user had a C-representable named section in both the executable and shared libraries, and of course wanted the size of the local section in the executable, not the dynamic section. It does mean that __start and __stop symbols don't behave exactly like PROVIDEd symbols, but I think that's a reasonable difference particularly since this is the way they used to behave. * elflink.c (bfd_elf_define_start_stop): Override symbols when they are defined dynamically.
2018-01-26PowerPC64 .branch_lt size change leads to "stubs don't match calculated size"Alan Modra2-0/+11
https://bugzilla.redhat.com/show_bug.cgi?id=1523457 I haven't analyzed this myself, I'm relying on Nick's excellent analysis. What I believe is happening is that after some number of stub sizing iterations, a long-branch stub needs to be converted to a plt-branch, but either due to stub alignment or other stubs shrinking in size, the stub group section size doesn't change. That means we exit from ppc64_elf_size_stubs after sizing with an incorrect layout, in fact the additional .branch_lt entry overlays .got! Since .TOC. is normally set to .got + 0x8000 the stub sizing code decides that entry is within +/-32k of the TOC pointer and so a three insn stub is sufficient. When we come to build the stubs using a correct non-overlaying layout, a four insn plt-branch stub is generated and the stub group size doesn't match that calculated earlier. * elf64-ppc.c (ppc64_elf_size_stubs): Iterate sizing when .branch_lt changes size.
2018-01-26Automatic date update in version.inGDB Administrator1-1/+1
2018-01-25PR22746, crash when running 32-bit objdump on corrupted fileAlan Modra2-2/+7
Avoid unsigned int overflow by performing bfd_size_type multiplication. PR 22746 * elfcode.h (elf_object_p): Avoid integer overflow.
2018-01-25Fix PR ld/22727 (TLS breakage in PIC/PIE mode on SPARC).Eric Botcazou15-140/+268
There are actually 2 different bugs: 1. TLS transition is broken in PIE mode. 2. TLS is broken in PIC/PIE mode when the __tls_get_addr symbol is versioned (as is the case on Linux and Solaris at least). The 1st bug is fixed by reverting the problematic change for now (note that the associated test doesn't pass on SPARC because of another issue so there is no formal regression in the testsuite). The 2nd bug is fixed by changing the call to _bfd_generic_link_add_one_symbol on __tls_get_addr into a mere lookup in _bfd_sparc_elf_check_relocs. bfd/ * elfxx-sparc.c (_bfd_sparc_elf_check_relocs) <R_SPARC_TLS_GD_CALL>: Do a mere lookup of the __tls_get_addr symbol instead of adding it. Revert 2017-10-19 H.J. Lu <hongjiu.lu@intel.com> PR ld/22263 * elfxx-sparc.c (sparc_elf_tls_transition): Replace bfd_link_pic with !bfd_link_executable, !bfd_link_pic with bfd_link_executable for TLS check. (_bfd_sparc_elf_check_relocs): Likewise. (allocate_dynrelocs): Likewise. (_bfd_sparc_elf_relocate_section): Likewise. ld/ * testsuite/ld-sparc/sparc.exp (32-bit: Helper shared library): Link with a version script. (32-bit: TLS -fpie): New test. (64-bit: Helper shared library): Link with a version script. (64-bit: TLS -fpie): New test. (64-bit: GOTDATA relocations): Pass -Av9 to the assembler. * testsuite/ld-sparc/tlslib.ver: New file. * testsuite/ld-sparc/tlspie32.dd: Likewise. * testsuite/ld-sparc/tlspie32.s: Likewise. * testsuite/ld-sparc/tlspie64.dd: Likewise. * testsuite/ld-sparc/tlspie64.s: Likewise. * testsuite/ld-sparc/tlssunbin32.dd: Adjust for versioned symbol. * testsuite/ld-sparc/tlssunbin32.rd: Likewise. * testsuite/ld-sparc/tlssunbin32.sd: Likewise. * testsuite/ld-sparc/tlssunbin64.dd: Likewise. * testsuite/ld-sparc/tlssunbin64.rd: Likewise. * testsuite/ld-sparc/tlssunbin64.sd: Likewise.
2018-01-25Automatic date update in version.inGDB Administrator1-1/+1
2018-01-24Fix GCC PR83906 - [8 Regression] Random FAIL: ↵Pedro Alves3-2/+72
libstdc++-prettyprinters/80276.cc whatis p4 GCC PR83906 [1] is about a GCC/libstdc++ GDB/Python type printer testcase failing randomly, as shown by running (in libstdc++'s testsuite): make check RUNTESTFLAGS=prettyprinters.exp=80276.cc in a loop. Sometimes you get this: FAIL: libstdc++-prettyprinters/80276.cc whatis p4 I.e., this: type = std::unique_ptr<std::vector<std::unique_ptr<std::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >>[]>>[99]> instead of this: type = std::unique_ptr<std::vector<std::unique_ptr<std::list<std::string>[]>>[99]> Jonathan Wakely tracked it on the printer side to this bit in libstdc++'s type printer: if self.type_obj == type_obj: return strip_inline_namespaces(self.name) This assumes the two types resolve to the same gdb.Type but some times the comparison unexpectedly fails. Running the testcase manually under Valgrind finds the problem in GDB: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ==6118== Conditional jump or move depends on uninitialised value(s) ==6118== at 0x4C35CB0: bcmp (vg_replace_strmem.c:1100) ==6118== by 0x6F773A: check_types_equal(type*, type*, VEC_type_equality_entry_d**) (gdbtypes.c:3515) ==6118== by 0x6F7B00: check_types_worklist(VEC_type_equality_entry_d**, bcache*) (gdbtypes.c:3618) ==6118== by 0x6F7C03: types_deeply_equal(type*, type*) (gdbtypes.c:3655) ==6118== by 0x4D5B06: typy_richcompare(_object*, _object*, int) (py-type.c:1007) ==6118== by 0x63D7E6C: PyObject_RichCompare (object.c:961) ==6118== by 0x646EAEC: PyEval_EvalFrameEx (ceval.c:4960) ==6118== by 0x646DC08: PyEval_EvalFrameEx (ceval.c:4519) ==6118== by 0x646DC08: PyEval_EvalFrameEx (ceval.c:4519) ==6118== by 0x646DC08: PyEval_EvalFrameEx (ceval.c:4519) ==6118== by 0x646DC08: PyEval_EvalFrameEx (ceval.c:4519) ==6118== by 0x646DC08: PyEval_EvalFrameEx (ceval.c:4519) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ That "bcmp" call is really a memcmp call in check_types_equal. The problem is that gdb is memcmp'ing two objects that are equal in value: (top-gdb) p *TYPE_RANGE_DATA (type1) $1 = {low = {kind = PROP_CONST, data = {const_val = 0, baton = 0x0}}, high = {kind = PROP_CONST, data = {const_val = 15, baton = 0xf}}, flag_upper_bound_is_count = 0, flag_bound_evaluated = 0} (top-gdb) p *TYPE_RANGE_DATA (type2) $2 = {low = {kind = PROP_CONST, data = {const_val = 0, baton = 0x0}}, high = {kind = PROP_CONST, data = {const_val = 15, baton = 0xf}}, flag_upper_bound_is_count = 0, flag_bound_evaluated = 0} but differ in padding. Notice the 4-byte hole: (top-gdb) ptype /o range_bounds /* offset | size */ type = struct range_bounds { /* 0 | 16 */ struct dynamic_prop { /* 0 | 4 */ dynamic_prop_kind kind; /* XXX 4-byte hole */ /* 8 | 8 */ union dynamic_prop_data { /* 8 */ LONGEST const_val; /* 8 */ void *baton; /* total size (bytes): 8 */ } data; which is filled with garbage: (top-gdb) x /40bx TYPE_RANGE_DATA (type1) 0x2fa7ea0: 0x01 0x00 0x00 0x00 0x43 0x01 0x00 0x00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 0x2fa7ea8: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x2fa7eb0: 0x01 0x00 0x00 0x00 0xfe 0x7f 0x00 0x00 0x2fa7eb8: 0x0f 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x2fa7ec0: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 (top-gdb) x /40bx TYPE_RANGE_DATA (type2) 0x20379b0: 0x01 0x00 0x00 0x00 0xfe 0x7f 0x00 0x00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 0x20379b8: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x20379c0: 0x01 0x00 0x00 0x00 0xfe 0x7f 0x00 0x00 0x20379c8: 0x0f 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x20379d0: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 (top-gdb) p memcmp (TYPE_RANGE_DATA (type1), TYPE_RANGE_DATA (type2), sizeof (*TYPE_RANGE_DATA (type1))) $3 = -187 In some cases objects of type range_bounds are memset when allocated, but then their dynamic_prop low/high fields are copied over from some template dynamic_prop object that wasn't memset. E.g., create_static_range_type's low/high locals are left with garbage in the padding, and then that padding is copied over to the range_bounds object's low/high fields. At first, I considered making sure to always memset range_bounds objects, thinking that maybe type objects are being put in some bcache instance somewhere. But then I hacked bcache/bcache_full to poison non-pod types, and made dynamic_prop a non-pod, and GDB still compiled. So given that, it seems safest to not assume padding will always be memset, and instead treat them as regular value types, implementing (in)equality operators and using those instead of memcmp. This fixes the random FAILs in GCC's testcase. [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83906 gdb/ChangeLog: 2018-01-24 Pedro Alves <palves@redhat.com> GCC PR libstdc++/83906 * gdbtypes.c (operator==(const dynamic_prop &, const dynamic_prop &)): New. (operator==(const range_bounds &, const range_bounds &)): New. (check_types_equal): Use them instead of memcmp. * gdbtypes.h (operator==(const dynamic_prop &, const dynamic_prop &)): Declare. (operator!=(const dynamic_prop &, const dynamic_prop &)): Declare. (operator==(const range_bounds &, const range_bounds &)): Declare. (operator!=(const range_bounds &, const range_bounds &)): Declare.
2018-01-24[LD][AARCH64]Add group relocations to create PC-relative offset.Renlin Li25-16/+192
This is a patch to add linker support for group relocations to create a 16, 32, 48, or 64 bit PC-relative offset inline. The following relocations are added along with the test cases: BFD_RELOC_AARCH64_MOVW_PREL_G0, BFD_RELOC_AARCH64_MOVW_PREL_G0_NC, BFD_RELOC_AARCH64_MOVW_PREL_G1, BFD_RELOC_AARCH64_MOVW_PREL_G1_NC, BFD_RELOC_AARCH64_MOVW_PREL_G2, BFD_RELOC_AARCH64_MOVW_PREL_G2_NC, BFD_RELOC_AARCH64_MOVW_PREL_G3. bfd/ 2018-01-24 Renlin Li <renlin.li@arm.com> * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Add support for BFD_RELOC_AARCH64_MOVW_PREL_G0, BFD_RELOC_AARCH64_MOVW_PREL_G0_NC, BFD_RELOC_AARCH64_MOVW_PREL_G1, BFD_RELOC_AARCH64_MOVW_PREL_G1_NC, BFD_RELOC_AARCH64_MOVW_PREL_G2, BFD_RELOC_AARCH64_MOVW_PREL_G2_NC, BFD_RELOC_AARCH64_MOVW_PREL_G3. * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Likewise. (_bfd_aarch64_elf_resolve_relocation): Likewise. ld/ 2018-01-24 Renlin Li <renlin.li@arm.com> * testsuite/ld-aarch64/aarch64-elf.exp: Run new testes. * testsuite/ld-aarch64/emit-relocs-287.s: Fix test case. * testsuite/ld-aarch64/emit-relocs-287.d: Fix expected output. * testsuite/ld-aarch64/emit-relocs-287-overflow.s: New. * testsuite/ld-aarch64/emit-relocs-287-overflow.d: New. * testsuite/ld-aarch64/emit-relocs-288.d: New. * testsuite/ld-aarch64/emit-relocs-288.s: New. * testsuite/ld-aarch64/emit-relocs-289.d: New. * testsuite/ld-aarch64/emit-relocs-289.s: New. * testsuite/ld-aarch64/emit-relocs-289-overflow.s: New. * testsuite/ld-aarch64/emit-relocs-289-overflow.d: New. * testsuite/ld-aarch64/emit-relocs-290.d: New. * testsuite/ld-aarch64/emit-relocs-290.s: New. * testsuite/ld-aarch64/emit-relocs-291.d: New. * testsuite/ld-aarch64/emit-relocs-291.s: New. * testsuite/ld-aarch64/emit-relocs-291-overflow.s: New. * testsuite/ld-aarch64/emit-relocs-291-overflow.d: New. * testsuite/ld-aarch64/emit-relocs-292.d: New. * testsuite/ld-aarch64/emit-relocs-292.s: New. * testsuite/ld-aarch64/emit-relocs-293.d: New. * testsuite/ld-aarch64/emit-relocs-293.s: New.
2018-01-24[GAS][AARCH64]Add group relocations to create PC-relative offset.Renlin Li21-0/+459
This is a patch to add the gas support for group relocations to create a 16, 32, 48, or 64 bit PC-relative offset inline. The following relocations are added along with the test cases: BFD_RELOC_AARCH64_MOVW_PREL_G0, BFD_RELOC_AARCH64_MOVW_PREL_G0_NC, BFD_RELOC_AARCH64_MOVW_PREL_G1, BFD_RELOC_AARCH64_MOVW_PREL_G1_NC, BFD_RELOC_AARCH64_MOVW_PREL_G2, BFD_RELOC_AARCH64_MOVW_PREL_G2_NC, BFD_RELOC_AARCH64_MOVW_PREL_G3. bfd/ 2018-01-24 Renlin Li <renlin.li@arm.com> * reloc.c: Add BFD_RELOC_AARCH64_MOVW_PREL_G0, BFD_RELOC_AARCH64_MOVW_PREL_G0_NC, BFD_RELOC_AARCH64_MOVW_PREL_G1, BFD_RELOC_AARCH64_MOVW_PREL_G1_NC, BFD_RELOC_AARCH64_MOVW_PREL_G2, BFD_RELOC_AARCH64_MOVW_PREL_G2_NC, BFD_RELOC_AARCH64_MOVW_PREL_G3. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. * elfnn-aarch64.c (elfNN_aarch64_howto_table): Add entries for BFD_RELOC_AARCH64_MOVW_PREL_G0, BFD_RELOC_AARCH64_MOVW_PREL_G0_NC, BFD_RELOC_AARCH64_MOVW_PREL_G1, BFD_RELOC_AARCH64_MOVW_PREL_G1_NC, BFD_RELOC_AARCH64_MOVW_PREL_G2, BFD_RELOC_AARCH64_MOVW_PREL_G2_NC, BFD_RELOC_AARCH64_MOVW_PREL_G3. gas/ 2018-01-24 Renlin Li <renlin.li@arm.com> * config/tc-aarch64.c (reloc_table): add entries for BFD_RELOC_AARCH64_MOVW_PREL_G0, BFD_RELOC_AARCH64_MOVW_PREL_G0_NC, BFD_RELOC_AARCH64_MOVW_PREL_G1, BFD_RELOC_AARCH64_MOVW_PREL_G1_NC, BFD_RELOC_AARCH64_MOVW_PREL_G2, BFD_RELOC_AARCH64_MOVW_PREL_G2_NC, BFD_RELOC_AARCH64_MOVW_PREL_G3. (process_movw_reloc_info): Supports newly added MOVW_PREL relocations. (md_apply_fix): Likewise * testsuite/gas/aarch64/prel_g0.s: New. * testsuite/gas/aarch64/prel_g0.d: New. * testsuite/gas/aarch64/prel_g0_nc.s: New. * testsuite/gas/aarch64/prel_g0_nc.d: New. * testsuite/gas/aarch64/prel_g1.s: New. * testsuite/gas/aarch64/prel_g1.d: New. * testsuite/gas/aarch64/prel_g1_nc.s: New. * testsuite/gas/aarch64/prel_g1_nc.d: New. * testsuite/gas/aarch64/prel_g2.s: New. * testsuite/gas/aarch64/prel_g2.d: New. * testsuite/gas/aarch64/prel_g2_nc.s: New. * testsuite/gas/aarch64/prel_g2_nc.d: New. * testsuite/gas/aarch64/prel_g3.s: New. * testsuite/gas/aarch64/prel_g3.d: New.
2018-01-24Automatic date update in version.inGDB Administrator1-1/+1
2018-01-23MIPS/GAS: Correct default ABI selection for `mips64*-ps2-elf*'Maciej W. Rozycki3-2/+10
Correct an issue with the `mips64*-ps2-elf*' target introduced with commit e407c74b5b60 ("Support for MIPS R5900 (Sony Playstation 2)"), <https://sourceware.org/ml/binutils/2012-12/msg00240.html> and make the n32 ABI the default for GAS, consistently with how BFD and LD are configured for this target. gas/ * configure.ac: Also set `mips_default_abi' to N32_ABI for `mips64*-ps2-elf*'. * configure: Regenerate.
2018-01-23MIPS/GAS: Remove a stale OPTION_COMPAT_ARCH_BASE option markerMaciej W. Rozycki2-1/+5
Complement commit 23fce1e31156 ("MIPS16 intermix test failure"), <https://sourceware.org/ml/binutils/2009-01/msg00335.html>, and remove a stale option marker entry. gas/ * config/tc-mips.c (options): Remove OPTION_COMPAT_ARCH_BASE enum value.
2018-01-23MIPS/BFD: Update a stale `mips_elf32_section_processing' referenceMaciej W. Rozycki2-1/+6
Update a stale reference to `mips_elf32_section_processing', following a merge of the function into `_bfd_mips_elf_section_processing' made with commit 103186c62b99 ("PATCH for MIPS 64-bit ABI suport"), <https://sourceware.org/ml/binutils/1999-q3/msg00072.html>. bfd/ * elfxx-mips.c (_bfd_mips_elf_final_link): Update a stale `mips_elf32_section_processing' comment reference.
2018-01-23Enable Intel PCONFIG instruction.Igor Tsimbalist17-5484/+5603
Intel has disclosed a set of new instructions for Icelake processor. The spec is https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf This patch enables Intel PCONFIG instruction. gas/ * config/tc-i386.c (cpu_arch): Add .pconfig. * doc/c-i386.texi: Document .pconfig. * testsuite/gas/i386/i386.exp: Add PCONFIG tests. * testsuite/gas/i386/pconfig-intel.d: New test. * testsuite/gas/i386/pconfig.d: Likewise. * testsuite/gas/i386/pconfig.s: Likewise. * testsuite/gas/i386/x86-64-pconfig-intel.d: Likewise. * testsuite/gas/i386/x86-64-pconfig.d: Likewise. * testsuite/gas/i386/x86-64-pconfig.s: Likewise. opcodes/ * i386-dis.c (enum): Add pconfig. * i386-gen.c (cpu_flag_init): Add CPU_PCONFIG_FLAGS. (cpu_flags): Add CpuPCONFIG. * i386-opc.h (enum): Add CpuPCONFIG. (i386_cpu_flags): Add cpupconfig. * i386-opc.tbl: Add PCONFIG instruction. * i386-init.h: Regenerate. * i386-tbl.h: Likewise.
2018-01-23Enable Intel WBNOINVD instruction.Igor Tsimbalist17-5483/+5609
Intel has disclosed a set of new instructions for Icelake processor. The spec is https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf This patch enables Intel WBNOINVD instruction. gas/ * config/tc-i386.c (cpu_arch): Add .wbnoinvd. * doc/c-i386.texi: Document .wbnoinvd. * testsuite/gas/i386/i386.exp: Add WBNOINVD tests. * testsuite/gas/i386/wbnoinvd-intel.d: New test. * testsuite/gas/i386/wbnoinvd.d: Likewise. * testsuite/gas/i386/wbnoinvd.s: Likewise. * testsuite/gas/i386/x86-64-wbnoinvd-intel.d: Likewise. * testsuite/gas/i386/x86-64-wbnoinvd.d: Likewise. * testsuite/gas/i386/x86-64-wbnoinvd.s: Likewise. opcodes/ * i386-dis.c (enum): Add PREFIX_0F09. * i386-gen.c (cpu_flag_init): Add CPU_WBNOINVD_FLAGS. (cpu_flags): Add CpuWBNOINVD. * i386-opc.h (enum): Add CpuWBNOINVD. (i386_cpu_flags): Add cpuwbnoinvd. * i386-opc.tbl: Add WBNOINVD instruction. * i386-init.h: Regenerate. * i386-tbl.h: Likewise.
2018-01-23MIPS/GAS: Correct `as --help' always reporting `o32' as the default ABIMaciej W. Rozycki2-3/+13
Remove an issue with `as --help' always reporting `o32' as the default ABI regardless of what the default actually is, originally caused by commit cac012d6d394 ("check mips abi x linker emulation compatibility"), <https://sourceware.org/ml/binutils/2003-05/msg00187.html> missing an update here. gas/ * config/tc-mips.c (md_show_usage): Correctly indicate the configuration-specific default ABI.
2018-01-23MIPS/GAS: Add missing `-mmips16e2'/`-mno-mips16e2' help textMaciej W. Rozycki2-0/+8
Correct a commit 25499ac7ee92 ("MIPS16e2: Add MIPS16e2 ASE support") GAS bug and add missing help text for the `-mmips16e2' and `-mno-mips16e2' options added with said commit. gas/ * config/tc-mips.c (md_show_usage): Report `-mmips16e2' and `-mno-mips16e2' options.
2018-01-23s390: Clean up s390-linux-tdep.cPhilipp Rudo1-32/+44
After moving big parts of the code to the new s390-tdep.c file s390-linux-tdep.c now contains many includes it doesn't need anymore. Furthermore, there are some functions lacking a description. Fix both and order the remaining includes alphabetically. gdb/ChangeLog * s390-linux-tdep.c: Remove unneeded includes and order them alphabetically. Add comments to functions without description.
2018-01-23s390: Move record-replay to s390-tdep.cPhilipp Rudo3-3961/+3979
Record-replay is independent of the OS. So it can be moved to the common s390 code without problem. gdb/ChangeLog: * s390-linux-tdep.c (s390_record_address_mask) (s390_record_calc_disp_common, s390_record_calc_disp) (s390_record_calc_disp_vsce, s390_record_calc_rl, s390_popcnt) (s390_record_gpr_g, s390_record_gpr_h, s390_record_vr) (s390_process_record): Move to s390-tdep.c. (s390_linux_init_abi_any): Adjust. * s390-tdep.c (s390_record_address_mask) (s390_record_calc_disp_common, s390_record_calc_disp) (s390_record_calc_disp_vsce, s390_record_calc_rl, s390_popcnt) (s390_record_gpr_g, s390_record_gpr_h, s390_record_vr) (s390_process_record): Moved from s390-linux-tdep.c (s390_gdbarch_init): Adjust.
2018-01-23s390: Split up s390-linux-tdep.c into two filesPhilipp Rudo8-3322/+3548
Currently all target dependent code for s390 is in one file, s390-linux-tdep.c. This includes code general for the architecture as well as code specific for uses in GNU/Linux (user space). Up until now this was OK as GNU/Linux was the only supported OS. In preparation to support the new Linux kernel 'OS' split up the existing s390 code into a general s390-tdep and a GNU/Linux-specific s390-linux-tdep. Note: The record-replay feature will be moved in a separate patch. This is simply due to the fact that the combined patch would be too large for the mailing list. This requires setting the process_record hook during OSABI init to keep the code bisectable. The patch moving record-replay cleans up this hack. gdb/ChangeLog: * s390-linux-nat.c (s390-tdep.h): New include. * Makefile.in (ALL_TARGET_OBS): Add s390-tdep.o. (HFILES_NO_SRCDIR): Add s390-tdep.h. (ALLDEPFILES): Add s390-tdep.c. * configure.tgt (s390*-*-linux*): Add s390-tdep.o. * s390-linux-tdep.h (HWCAP_S390_*, S390_*_REGNUM): Move to... * s390-tdep.h: ...this. New file. * s390-linux-tdep.c (s390-tdep.h): New include. (_initialize_s390_tdep): Rename to... (_initialize_s390_linux_tdep): ...this and adjust. (s390_abi_kind, s390_vector_abi_kind, gdbarch_tdep) (enum named opcodes, S390_NUM_GPRS, S390_NUM_FPRS): Move to s390-tdep.h. (s390_break_insn, s390_breakpoint, s390_readinstruction, is_ri) (is_ril, is_rr, is_rre, is_rs, is_rsy, is_rx, is_rxy) (s390_is_partial_instruction, s390_software_single_step) (is_non_branch_ril, s390_displaced_step_copy_insn) (s390_displaced_step_fixup, s390_displaced_step_hw_singlestep) (s390_prologue_data, s390_addr, s390_store, s390_load) (s390_check_for_saved, s390_analyze_prologue, s390_skip_prologue) (s390_register_call_saved, s390_guess_tracepoint_registers) (s390_register_name, s390_dwarf_regmap, s390_dwarf_reg_to_regnum) (regnum_is_gpr_full, regnum_is_vxr_full, s390_value_from_register) (s390_pseudo_register_name, s390_pseudo_register_type) (s390_pseudo_register_read, s390_pseudo_register_write) (s390_pseudo_register_reggroup_p, s390_ax_pseudo_register_collect) (s390_ax_pseudo_register_push_stack, s390_gen_return_address) (s390_addr_bits_remove, s390_address_class_type_flags) (s390_address_class_type_flags_to_name) (s390_address_class_name_to_type_flags, s390_effective_inner_type) (s390_function_arg_float, s390_function_arg_vector) (is_power_of_two, s390_function_arg_integer, s390_arg_state) (s390_handle_arg, s390_push_dummy_call, s390_dummy_id) (s390_frame_align, s390_register_return_value, s390_return_value) (s390_stack_frame_destroyed_p, s390_unwind_pc, s390_unwind_sp) (s390_unwind_pseudo_register, s390_adjust_frame_regnum) (s390_dwarf2_prev_register, s390_dwarf2_frame_init_reg) (s390_trad_frame_prev_register, s390_unwind_cache) (s390_prologue_frame_unwind_cache) (s390_backchain_frame_unwind_cache, s390_frame_unwind_cache) (s390_frame_this_id, s390_frame_prev_register, s390_frame_unwind) (s390_stub_unwind_cache, s390_stub_frame_unwind_cache) (s390_stub_frame_this_id, s390_stub_frame_prev_register) (s390_stub_frame_sniffer, s390_stub_frame_unwind) (s390_frame_base_address, s390_local_base_address) (s390_frame_base, s390_gcc_target_options) (s390_gnu_triplet_regexp, s390_stap_is_single_operand) (s390_validate_reg_range, s390_tdesc_valid) (s390_gdbarch_tdep_alloc, s390_gdbarch_init): Move to... * s390-tdep.c: ...this. New file.
2018-01-23s390: gdbarch_tdep add hook for syscall recordPhilipp Rudo2-2/+26
Most parts of s390_process_record are common for the architecture. Only the system call handling differs between the OSes. In order to be able to move s390_process_record to a common code file add a hook to record syscalls to gdbarch_tdep. So every OS can implement their own handling. gdb/ChangeLog: * s390-linux-tdep.c (gdbarch_tdep.s390_syscall_record): New hook. (s390_process_record, s390_gdbarch_tdep_alloc) (s390_linux_init_abi_any): Use/set new hook.
2018-01-23s390: Hook s390 into OSABI mechanismPhilipp Rudo2-127/+161
Do what the title says and distinguish between 31- and 64-bit systems. The goal is to init the OSABI as late as possible in gdbarch_init so the OSABI has the chance to overwrite the defaults. There are two pitfalls to be aware of: First, the dwarf2 unwinder must be appended before the OSABI is initialized. Otherwise the OS could add a default unwinder which always takes control before the dwarf unwinder even gets a chance. Second, tdesc_use_registers has to be handled with extra care. It sets several gdbarch hooks, especially gdbarch_register_name, which has to be overwritten again after the call. Furthermore it deletes the tdesc_data without checking. Therefore there must not be a call to tdesc_data_cleanup afterwards or GDB will crash with a double free. gdb/ChangeLog: * s390-linux-tdep.c (osabi.h): New include. (s390_linux_init_abi_31, s390_linux_init_abi_64) (s390_linux_init_abi_any): New functions. (s390_gdbarch_init, _initialize_s390_tdep): Adjust.
2018-01-23s390: if -> gdb_assert for tdesc_has_registers checkPhilipp Rudo2-8/+11
Before doing the tdesc validation there is a check whether the tdesc has registers or not. This check is not only unnecessary but wrong. First the check is done after a default tdesc is assigned if the original tdesc has no registers. These default tdescs always have registers so the check alway returns true. Second if the default tdesc would not have registers the check only skips the tdesc validation instead of returning an error. This would trigger a gdb_assert later on in tdesc_use_registers. gdb/ChangeLog: * s390-linux-tdep.c (s390_gdbarch_init): Use gdb_assert for tdesc_has_registers check
2018-01-23s390: Move tdesc validation to separate functionPhilipp Rudo2-177/+172
Simplify s390_gdbarch_init by moving the target description validation to a separate function. gdb/ChangeLog: * s390-linux-tdep.c (s390_tdesc_valid): New function. (s390_validate_reg_range): New macro. (s390_gdbarch_init): Adjust.
2018-01-23s390: gdbarch_tdep add field tdescPhilipp Rudo2-1/+13
Add a field for the target description to gdbarch_tdep. This will later be needed to pass the 'correct' target description from osabi_init to gdbarch_init. Unfortunately this cannot be done using gdbarch_info as it is only passed by copy, not reference. gdb/ChangeLog: * s390-linux-tdep.c (gdbarch_tdep) <tdesc>: New field. (s390_gdbarch_tdep_alloc): Adjust. (s390_gdbarch_init): Adjust.
2018-01-23s390: gdbarch_tdep.have_* int -> boolPhilipp Rudo2-10/+17
Currently the gdbarch_tdep.have_* flags are a mix of int and bool. Clean this up by making them all bool. gdb/ChangeLog: * s390-linux-tdep.c (gdbarch_tdep) <have_linux_v1, have_linux_v2> <have_tdb>: Change type to bool. (s390_gdbarch_tdep_alloc): Adjust. (s390_gdbarch_init): Adjust.
2018-01-23s390: Allocate gdbarch & tdep at start of gdbarch_initPhilipp Rudo2-42/+73
Moving the allocation of gdbarch_tdep to the start of s390_gdbarch_init allows us to use its fields for tracking the different features instead of using separate variables. To make the code a little nicer move the actual allocation and initialization to a separate function. Also move the allocation of gdbarch to keep the two together. gdb/ChangeLog: * s390-linux-tdep (s390_abi_kind) <ABI_NONE>: New default field. (gdbarch_tdep) <have_upper, have_vx>: New fields. (s390_gdbarch_tdep_alloc): New function. (s390_gdbarch_init): Allocate tdep at start and use its fields instead of separate variables.
2018-01-23s390: Remove duplicate checks for cached gdbarch at initPhilipp Rudo2-6/+8
When initializing the gdbarch there is a check whether an appropriate gdbarch already exists in the gdbarch_list. Failing of some of the checks would lead to a different target description. However gdbarch_list_lookup_by_info already checks for if (info->target_desc != arches->gdbarch->target_desc) continue; Remove these duplicate checks. gdb/ChangeLog: * s390-linux-tdep.c (s390_gdbarch_init): Remove duplicate checks when looking for cached gdbarch and add comment for remaining.
2018-01-23Automatic date update in version.inGDB Administrator1-1/+1
2018-01-22GAS/doc: Correct `.set nomips16e2' directive description syntaxMaciej W. Rozycki2-2/+7
gas/ * doc/c-mips.texi (MIPS ASE Instruction Generation Overrides): Correct syntax of the `.set nomips16e2' directive description.
2018-01-22binutils/doc: Fix a "using" typo in `objcopy --rename-section' descriptionMaciej W. Rozycki2-1/+6
binutils/ * doc/binutils.texi (objcopy): Fix a typo in `--rename-section' option description.
2018-01-22Fix segfault with 'set print object on' + 'whatis <struct>' & coPedro Alves4-5/+38
Compiling GDB with a recent GCC exposes a problem: ../../gdb/typeprint.c: In function 'void whatis_exp(const char*, int)': ../../gdb/typeprint.c:515:12: warning: 'val' may be used uninitialized in this function [-Wmaybe-uninitialized] real_type = value_rtti_type (val, &full, &top, &using_enc); ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The warning is correct. There are indeed code paths that use uninitialized 'val', leading to crashes. Inside the value_rtti_indirect_type/value_rtti_type calls here in whatis_exp: if (opts.objectprint) { if (((TYPE_CODE (type) == TYPE_CODE_PTR) || TYPE_IS_REFERENCE (type)) && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRUCT)) real_type = value_rtti_indirect_type (val, &full, &top, &using_enc); else if (TYPE_CODE (type) == TYPE_CODE_STRUCT) real_type = value_rtti_type (val, &full, &top, &using_enc); } We reach those calls above with "set print object on", and then with any of: (gdb) whatis struct some_structure_type (gdb) whatis struct some_structure_type * (gdb) whatis struct some_structure_type & because "whatis" with a type argument enters this branch: /* The behavior of "whatis" depends on whether the user expression names a type directly, or a language expression (including variable names). If the former, then "whatis" strips one level of typedefs, only. If an expression, "whatis" prints the type of the expression without stripping any typedef level. "ptype" always strips all levels of typedefs. */ if (show == -1 && expr->elts[0].opcode == OP_TYPE) { which does not initialize VAL. Trying the above triggers crashes like this: (gdb) set print object on (gdb) whatis some_structure_type Thread 1 "gdb" received signal SIGSEGV, Segmentation fault. 0x00000000005dda90 in check_typedef (type=0x6120736573756170) at src/gdb/gdbtypes.c:2388 2388 int instance_flags = TYPE_INSTANCE_FLAGS (type); ... This is a regression caused by a recent-ish refactoring of the code on 'whatis_exp', introduced by: commit c973d0aa4a2c737ab527ae44a617f1c357e07364 Date: Mon Aug 21 11:34:32 2017 +0100 Fix type casts losing typedefs and reimplement "whatis" typedef stripping Fix this by setting VAL to NULL in the "whatis TYPE" case, and skipping fetching the dynamic type if there's no value to fetch it from. New tests included. gdb/ChangeLog: 2018-01-22 Pedro Alves <palves@redhat.com> Sergio Durigan Junior <sergiodj@redhat.com> * typeprint.c (whatis_exp): Initialize "val" in the "whatis type" case. gdb/testsuite/ChangeLog: 2018-01-22 Pedro Alves <palves@redhat.com> Sergio Durigan Junior <sergiodj@redhat.com> * gdb.base/whatis.exp: Add tests for 'set print object on' + 'whatis <struct>' 'whatis <struct> *' and 'whatis <struct> &'.
2018-01-22MAINTAINERS: Update my company e-mail addressMaciej W. Rozycki6-3/+15
Following my recent transition from Imagination Technologies to the reincarnated MIPS company update MAINTAINERS entries accordingly. binutils/ * MAINTAINERS: Update my company e-mail address. gdb/ * MAINTAINERS: Update my company e-mail address. sim/ * MAINTAINERS: Update my company e-mail address.
2018-01-22Fix the RX assembler so that it can handle escaped double quote characters, ↵Oleg Endo5-2/+30
ie: \" PR 22737 * config/tc-rx.c (rx_start_line): Handle escaped double-quote character. * testsuite/gas/rx/pr22737.s: New test. * testsuite/gas/rx/pr22737.d: Likewise. * testsuite/gas/rx/rx.exp: Run the new test.
2018-01-22Update Swedish translation for the binutils sub-directoryNick Clifton2-1640/+2082
2018-01-22regcache::cooked_write testYao Qi2-0/+129
Since my following patches will change how each gdbarch read and write pseudo registers, it's better to write a unit test to regcache::cooked_write, to make sure my following changes don't cause any regressions. See the comments on cooked_write_test. gdb: 2018-01-22 Yao Qi <yao.qi@linaro.org> * regcache.c (cooked_write_test): New function. (_initialize_regcache): Register the test.
2018-01-22regcache_cooked_read -> regcache->cooked_readYao Qi5-30/+40
Similarly, this patch replaces regcache_cooked_read with regcache->cooked_read. gdb: 2018-01-22 Yao Qi <yao.qi@linaro.org> * ia64-tdep.c (ia64_pseudo_register_read): Call regcache->cooked_read instead of regcache_cooked_read_unsigned. * m32c-tdep.c (m32c_cat_read): Likewise. (m32c_r3r2r1r0_read): Likewise. * m68hc11-tdep.c (m68hc11_pseudo_register_read): Likewise. * xtensa-tdep.c (xtensa_register_read_masked): Likewise.
2018-01-22Replace regcache_raw_read with regcache->raw_readYao Qi24-138/+145
The patch later in this series will move regcache's raw_read and cooked_read methods to a new class regcache_read, and regcache is dervied from it. Also pass regcache_read instead of regcache to gdbarch methods pseudo_register_read and pseudo_register_read_value. In order to prepare for this change, this patch changes regcache_raw_read to regcache->raw_read. On the other hand, since we are in C++, I prefer using class method (regcache->raw_read). gdb: 2018-01-22 Yao Qi <yao.qi@linaro.org> * aarch64-tdep.c (aarch64_pseudo_read_value): Call regcache method raw_read instead of regcache_raw_read. * amd64-tdep.c (amd64_pseudo_register_read_value): Likewise. * arm-tdep.c (arm_neon_quad_read): Likewise. * avr-tdep.c (avr_pseudo_register_read): Likewise. * bfin-tdep.c (bfin_pseudo_register_read): Likewise. * frv-tdep.c (frv_pseudo_register_read): Likewise. * h8300-tdep.c (h8300_pseudo_register_read): Likewise. * i386-tdep.c (i386_mmx_regnum_to_fp_regnum): Likewise. (i386_pseudo_register_read_into_value): Likewise. * mep-tdep.c (mep_pseudo_cr32_read): Likewise. * msp430-tdep.c (msp430_pseudo_register_read): Likewise. * nds32-tdep.c (nds32_pseudo_register_read): Likewise. * rl78-tdep.c (rl78_pseudo_register_read): Likewise. * s390-linux-tdep.c (s390_pseudo_register_read): Likewise. * sparc-tdep.c (sparc32_pseudo_register_read): Likewise. * sparc64-tdep.c (sparc64_pseudo_register_read): Likewise. * spu-tdep.c (spu_pseudo_register_read_spu): Likewise. * xtensa-tdep.c (xtensa_pseudo_register_read): Likewise.
2018-01-22Remove mt portYao Qi5-1239/+10
This patch removes the MT port. The removal was annoucned https://sourceware.org/ml/gdb-announce/2017/msg00006.html I'll remove MT from the top-level configure later. gdb: 2018-01-22 Yao Qi <yao.qi@linaro.org> * Makefile.in (ALL_TARGET_OBS): Remove mt-tdep.o. * configure.tgt: Remove target mt. * mt-tdep.c: Remove. * regcache.c (cooked_read_test): Remove the check for mt.
2018-01-22Don't call gdbarch_pseudo_register_read_value in jit.cYao Qi2-11/+10
gdbarch_pseudo_register_read_value is not implemented in every gdbarch, so the predicate gdbarch_pseudo_register_read_value_p is needed before calling it. However, there is no such guard in jit_frame_prev_register, I am wondering how does jit work on the arch without having gdbarch method pseudo_register_read_value. The proper way to get register value is to call cooked_read, and then create the value object from the buffer. gdb: 2018-01-22 Yao Qi <yao.qi@linaro.org> * jit.c (jit_frame_prev_register): Call regcache::cooked_read instead of gdbarch_pseudo_register_read_value.