The branch, scox/gdbserver-multi-client has been created at 016f5a3777ab6ce33616917be7795a7501f29dd7 (commit) - Log ----------------------------------------------------------------- commit 016f5a3777ab6ce33616917be7795a7501f29dd7 Author: Jim Wilson Date: Tue Nov 7 09:43:18 2017 -0800 Fix typo in my email address. binutils/ * MAINTAINERS (RISC-V): Fix typo in my email address. commit 180093c76385b4037128109f452ce4a2414af124 Author: Palmer Dabbelt Date: Mon Nov 6 17:53:12 2017 -0800 RISC-V: Add Jim Wilson as a maintainer, and clean up our entries Jim has recently started working at SiFive, where he'll be contributing to our binutils port. Andrew and I would like him to be a maintainer. My understanding is that this is right place to ask. I've also changed my address to my SiFive one, where I also work -- it seems cleaner to have everyone use our proper email address. While I was in there, I noticed a trailing space after Andrew's name so I went ahead and removed it as well. binutils/ChangeLog 2017-11-07 Palmer Dabbelt * MAINTAINERS (RISC-V): Add Jim Wilson as a maintainer. Clean up Andrew's entry (remove trailing space, add tabs). Change Palmer's email address, and clean up entry (add tabs). commit f77bb6c56b4091ed863d8cd03333a79a8d554ce1 Author: Jim Wilson Date: Mon Nov 6 16:32:08 2017 -0800 RISC-V: Fix riscv g++ testsuite EH failures. This fixes some EH failures for the medany code model in the g++ testsuite. The problem is that the assembler is computing some values in the eh_frame section as constants, that instead should have had relocs to be resolved by the linker. This happens in output_cfi_insn in the DW_CFA_advance_loc case where it compares label frags and immediately simplifies if they are the same. We can fix that by forcing a new frag after every instruction that the linker can reduce in size. I've also added a testcase to verify the fix. This was tested with binutils make check, and gcc/g++ make checks on qemu for medlow and medany code models. gas/ * config/tc-riscv.c (append_insn): Call frag_wane and frag_new at end for linker optimizable relocs. * testsuite/gas/riscv/eh-relocs.d: New. * testsuite/gas/riscv/eh-relocs.s: New. * testsuite/gas/riscv/riscv.exp: Run eh-relocs test. commit 1270b047fdc68d89f05668ed919d17f5fceeba2a Author: Palmer Dabbelt Date: Mon Nov 6 13:22:42 2017 -0800 RISC-V: Add satp as an alias for sptbr The RISC-V privileged ISA changed the name of sptbr (Supervisor Page Table Base Register) to satp (Supervisor Address Translation and Protection) to reflect the fact it could be used for more than just paging. This patch adds an alias, as they're the same register. include/ChangeLog 2017-11-06 Palmer Dabbelt * opcode/riscv-opc.h (sptbr): Rename to satp. (CSR_SPTBR): Rename to CSR_SATP. (sptbr): Alias to CSR_SATP. gas/ChangeLog 2017-11-06 Palmer Dabbelt * testsuite/gas/riscv/satp.d: New test. testsuite/gas/riscv/satp.s: Likewise. testsuite/gas/riscv/riscv.exp: Likewise. config/tc-riscv.c (md_begin): Handle CSR aliases. commit a02b41a7e604471e584dc2151fbd36714842710e Author: Pedro Alves Date: Tue Nov 7 11:16:09 2017 +0000 Add some more breakpoint/location range tests Some extra thoroughness tests that I had over here. gdb/testsuite/ChangeLog: 2017-11-07 Pedro Alves * gdb.cp/ena-dis-br-range.exp: Add more tests. commit 95e95a6de2e4a050870c49bf52fbac0239847b63 Author: Pedro Alves Date: Tue Nov 7 11:00:32 2017 +0000 Make breakpoint/location number parsing error output consistent ... and also make GDB catch a few more cases of invalid input. This fixes the inconsistency in GDB's output (e.g., "bad" vs "Bad") exposed by the new tests added in the previous commit. Also, makes the "0-0" and "inverted range" cases be loud errors. Also makes GDB reject negative breakpoint number in ranges. We already rejected negative number literals, but you could still subvert that via convenience variables, like: (gdb) set $bp -1 (gdb) disable $bp.1-2 The change to get_number_trailer fixes a bug exposed by the new tests. The function did not handle parsing "-$num". [This wasn't visible in the gdb.multi/tids.exp (which has similar tests) because the TID range parsing is implemented differently.] gdb/ChangeLog: 2017-11-07 Pedro Alves * breakpoint.c (extract_bp_kind): New enum. (extract_bp_num, extract_bp_or_bp_range): New functions, partially factored out from ... (extract_bp_number_and_location): ... here. * cli/cli-utils.c (get_number_trailer): Handle '-$variable'. gdb/testsuite/ChangeLog: 2017-11-07 Pedro Alves * gdb.base/ena-dis-br.exp (test_ena_dis_br): Adjust test. * gdb.cp/ena-dis-br-range.exp: Adjust tests. (disable_invalid, disable_inverted, disable_negative): New procedures. ("bad numbers"): New set of tests. commit cee62dbd8771e22856d950c2615fb463305a9fcb Author: Pedro Alves Date: Tue Nov 7 11:00:31 2017 +0000 Add base 'enable/disable invalid location range' tests This adds tests that exercise the "bad breakpoint number" paths. Specifically: - malformed ranges - use of explicit 0 as bp/loc number. - inverted ranges I'm adding this as a baseline to improve. This shows that there's a lot of inconsistency in GDB's output (e.g., "bad" vs "Bad"). Also, IMO, the "0-0" and inverted range cases should be loud errors. That and more will all be addressed in the next patch. gdb/testsuite/ChangeLog: 2017-11-07 Pedro Alves * gdb.cp/ena-dis-br-range.exp: Add tests. commit cc638e867c240546b4dbc791761099d3ca5fe4a9 Author: Pedro Alves Date: Tue Nov 7 11:00:31 2017 +0000 Breakpoint location parsing: always error instead of warning It's odd that when parsing a breakpoint or location number, we error out in most cases, but warn in others. (gdb) disable 1- bad breakpoint number at or near: '1-' (gdb) disable -1 bad breakpoint number at or near: '-1' (gdb) disable .foo bad breakpoint number at or near: '.foo' (gdb) disable foo.1 Bad breakpoint number 'foo.1' (gdb) disable 1.foo warning: bad breakpoint number at or near '1.foo' This changes GDB to always error out. It required touching one testcase that expected the warning. gdb/ChangeLog: 2017-11-07 Pedro Alves * breakpoint.c (extract_bp_number_and_location): Change return type to void. Throw error instead of warning. (enable_disable_command): Adjust. gdb/testsuite/ChangeLog: 2017-11-07 Pedro Alves * gdb.base/ena-dis-br.exp: Don't expect "warning:". commit d0fe47010fc3289e081ba547a0bfcc6d07906cd2 Author: Xavier Roirand Date: Tue Nov 7 11:00:31 2017 +0000 Allow enabling/disabling breakpoint location ranges When a breakpoint has multiple locations, like e.g.: Num Type Disp Enb Address What 1 breakpoint keep y 1.1 y 0x080486a2 in void foo()... 1.2 y 0x080486ca in void foo()... [....] 1.5 y 0x080487fa in void foo()... it's possible to enable/disable the individual locations using the '.' syntax, like e.g.: (gdb) disable 1.2 1.3 1.4 1.5 That's inconvenient when you have a long list of locations to disable, however. This patch adds shorthand for the above, by making it possible to specify a range of locations with the following syntax (similar to thread id ranges): .- For example, the command above can now be simplified to: (gdb) disable 1.2-5 gdb/ChangeLog: 2017-11-07 Xavier Roirand Pedro Alves * breakpoint.c (map_breakpoint_number_range): New, factored out from ... (map_breakpoint_numbers): ... here. (find_location_by_number): Change parameters from string to breakpoint number and location. (extract_bp_number_and_location): New function. (enable_disable_bp_num_loc) (enable_disable_breakpoint_location_range) (enable_disable_command): New functions, factored out ... (enable_command, disable_command): ... these functions, and adjusted to support ranges. * NEWS: Document enable/disable breakpoint location range feature. gdb/doc/ChangeLog: 2017-11-07 Xavier Roirand Pedro Alves * gdb.texinfo (Set Breaks): Document support for breakpoint location ranges in the enable/disable commands. gdb/testsuite/ChangeLog: 2017-11-07 Xavier Roirand Pedro Alves * gdb.base/ena-dis-br.exp: Add reference to gdb.cp/ena-dis-br-range.exp. * gdb.cp/ena-dis-br-range.exp: New file. * gdb.cp/ena-dis-br-range.cc: New file. commit 0198d5e6fc331d50dc19b7f250ac4bc510a8dbb5 Author: Tamar Christina Date: Tue Nov 7 10:17:21 2017 +0000 This patch similarly to the AArch64 one enables Dot Product support by default for the Cortex-A55 and Cortex-A75 which have hardware support for these instructions. gas * config/tc-arm.c (arm_cpus): Change FPU_ARCH_CRYPTO_NEON_VFP_ARMV8 into FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD. include * opcode/arm.h (FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD): New macro. commit db84fff3f888bb3e6d51ad24b6bfa2c6e2c3a206 Author: Alan Modra Date: Mon Nov 6 15:21:53 2017 +1030 PowerPC64 statistics message Fixes "linker stubs in 1 groups". * elf64-ppc.c (ppc64_elf_build_stubs): Correct pluralization in statistics message. commit e54e9ac577591f53bd9552210b1062c6230030be Author: Alan Modra Date: Tue Nov 7 16:32:07 2017 +1030 bundle_lock message tidy I'd edited these thinking that there might be cases where the counts were one, but on further investigation it appears not. What's left here are some minor tweaks. * read.c (assemble_one, s_bundle_unlock): Formatting. Consistently add comma and "bytes" to error message. * testsuite/gas/i386/bundle-bad.l: Adjust to suit. commit d3a49aa80b8a6eab1c684deddad3542c4cdaa497 Author: Alan Modra Date: Tue Nov 7 11:18:29 2017 +1030 readelf ngettext fixes This patch is a first pass at fixing readelf message pluralization. I've deliberately not fixed the "out of memory" errors since it's very unlikely that they will ever be complaining about not being able to allocate for a single entry, and a few others where the size is very unlikely to be 1 byte. Then there are messages like this one: "Out of %lu items there are %zu bucket clashes (longest of %zu entries).\n" I suppose this could be split into three parts, "Of %lu items ", "there are %zu bucket clashes ", and "(longest of %zu entries).\n", each part being printed separately, but that might not be ideal for sentence construction in other languages. For now I'm punting on this one. Changes to readelf output require lots of testsuite adjustment.. binutils/ * dwarf.c (read_uleb128): Properly pluralize messages. (display_debug_lines_raw, display_debug_loc): Likewise. (display_debug_names, process_cu_tu_index): Likewise. * od-macho.c (dump_code_signature_superblob): Likewise. * readelf.c (process_program_headers): Likewise. (process_section_header, process_relocs): Likewise. (hppa_process_unwind, arm_process_unwind): Likewise. (process_dynamic_section, process_version_sections): Likewise. (process_symbol_table, process_syminfo): Likewise. (apply_relocations, process_mips_specific): Likewise. (process_gnu_liblist, process_notes_at): Likewise. (process_archive): Likewise. * testsuite/binutils-all/dw2-1.W, * testsuite/binutils-all/dw2-3.W, * testsuite/binutils-all/dw2-3gabi.W, * testsuite/binutils-all/dw5.S, * testsuite/binutils-all/dw5.W, * testsuite/binutils-all/i386/compressed-1a.d, * testsuite/binutils-all/libdw2-compressedgabi.out, * testsuite/binutils-all/objdump.W, * testsuite/binutils-all/readelf.r, * testsuite/binutils-all/readelf.r-64, * testsuite/binutils-all/x86-64/compressed-1a.d: Update for pluralization fixes. gas/ * testsuite/gas/arm/got_prel.d, * testsuite/gas/elf/dwarf2-1.d, * testsuite/gas/elf/dwarf2-2.d, * testsuite/gas/elf/dwarf2-3.d, * testsuite/gas/elf/dwarf2-5.d, * testsuite/gas/elf/dwarf2-6.d, * testsuite/gas/i386/debug1.d, * testsuite/gas/i386/dw2-compress-1.d, * testsuite/gas/i386/dw2-compress-3a.d, * testsuite/gas/i386/dw2-compress-3b.d, * testsuite/gas/i386/dw2-compressed-1.d, * testsuite/gas/i386/dw2-compressed-3a.d, * testsuite/gas/i386/dw2-compressed-3b.d, * testsuite/gas/i386/ilp32/x86-64-localpic.d, * testsuite/gas/i386/localpic.d, * testsuite/gas/i386/x86-64-localpic.d, * testsuite/gas/ia64/pr13167.d, * testsuite/gas/mips/loc-swap-2.d, * testsuite/gas/mips/loc-swap.d, * testsuite/gas/mips/micromips@loc-swap-2.d, * testsuite/gas/mips/micromips@loc-swap.d, * testsuite/gas/mips/mips16-dwarf2-n32.d, * testsuite/gas/mips/mips16-dwarf2.d, * testsuite/gas/mips/mips16@loc-swap-2.d, * testsuite/gas/mips/mips16@loc-swap.d, * testsuite/gas/mips/mips16e@loc-swap.d, * testsuite/gas/mmix/bspec-1.d, * testsuite/gas/mmix/bspec-2.d, * testsuite/gas/tic6x/unwind-1.d, * testsuite/gas/tic6x/unwind-2.d, * testsuite/gas/tic6x/unwind-3.d: Update for pluralization fixes. ld/ * testsuite/ld-aarch64/ifunc-13.d, * testsuite/ld-aarch64/ifunc-15.d, * testsuite/ld-aarch64/ifunc-20.d, * testsuite/ld-alpha/tlsbin.rd, * testsuite/ld-alpha/tlspic.rd, * testsuite/ld-arm/ifunc-3.rd, * testsuite/ld-arm/ifunc-9.rd, * testsuite/ld-arm/unwind-mix.d, * testsuite/ld-arm/unwind-rel.d, * testsuite/ld-cris/hiddef1.d, * testsuite/ld-cris/libdso-13.d, * testsuite/ld-cris/libdso-2.d, * testsuite/ld-cris/pr16044.d, * testsuite/ld-cris/tls-local-63.d, * testsuite/ld-cris/tls-local-64.d, * testsuite/ld-cris/tls-und-38.d, * testsuite/ld-cris/tls-und-42.d, * testsuite/ld-cris/tls-und-46.d, * testsuite/ld-cris/tls-und-50.d, * testsuite/ld-cris/weakref3.d, * testsuite/ld-cris/weakref4.d, * testsuite/ld-elf/comm-data2r.rd, * testsuite/ld-elf/discard1.d, * testsuite/ld-elf/discard2.d, * testsuite/ld-elf/pr19539.d, * testsuite/ld-elf/pr22374-1.r, * testsuite/ld-elf/pr22374-2.r, * testsuite/ld-i386/combreloc.d, * testsuite/ld-i386/emit-relocs-nacl.rd, * testsuite/ld-i386/emit-relocs.rd, * testsuite/ld-i386/pr13302.d, * testsuite/ld-i386/pr17709-nacl.rd, * testsuite/ld-i386/pr17709.rd, * testsuite/ld-i386/pr19539.d, * testsuite/ld-i386/pr19615.d, * testsuite/ld-i386/pr19636-1a.d, * testsuite/ld-i386/pr19636-1e.d, * testsuite/ld-i386/pr19636-1f.d, * testsuite/ld-i386/pr19636-2a.d, * testsuite/ld-i386/pr19636-2b.d, * testsuite/ld-i386/pr19636-2d-nacl.d, * testsuite/ld-i386/pr19636-2e-nacl.d, * testsuite/ld-i386/pr19636-3a.d, * testsuite/ld-i386/pr19636-3d.d, * testsuite/ld-i386/pr19636-3e.d, * testsuite/ld-i386/pr19636-4a.d, * testsuite/ld-i386/pr19645.d, * testsuite/ld-i386/pr19827-nacl.rd, * testsuite/ld-i386/pr19827.rd, * testsuite/ld-i386/pr20253-4a.d, * testsuite/ld-i386/pr20253-4b.d, * testsuite/ld-i386/pr20253-5.d, * testsuite/ld-i386/tlsbin-nacl.rd, * testsuite/ld-i386/tlsbin.rd, * testsuite/ld-i386/tlspic-nacl.rd, * testsuite/ld-i386/tlspic.rd, * testsuite/ld-i386/undefweakb.d, * testsuite/ld-ia64/tlsbin.rd, * testsuite/ld-ia64/tlspic.rd, * testsuite/ld-ifunc/ifunc-13-i386.d, * testsuite/ld-ifunc/ifunc-13-x86-64.d, * testsuite/ld-ifunc/ifunc-15-i386.d, * testsuite/ld-ifunc/ifunc-15-x86-64.d, * testsuite/ld-ifunc/ifunc-20-i386.d, * testsuite/ld-ifunc/ifunc-20-x86-64.d, * testsuite/ld-ifunc/ifunc-23a-x86.d, * testsuite/ld-ifunc/ifunc-23b-x86.d, * testsuite/ld-ifunc/ifunc-23c-x86.d, * testsuite/ld-ifunc/ifunc-24a-x86.d, * testsuite/ld-ifunc/ifunc-24b-x86.d, * testsuite/ld-ifunc/ifunc-24c-x86.d, * testsuite/ld-ifunc/ifunc-25a-x86.d, * testsuite/ld-ifunc/ifunc-25b-x86.d, * testsuite/ld-ifunc/ifunc-25c-x86.d, * testsuite/ld-m68k/got-1.d, * testsuite/ld-mips-elf/vxworks1.rd, * testsuite/ld-powerpc/ambiguousv1.d, * testsuite/ld-powerpc/ambiguousv1b.d, * testsuite/ld-powerpc/ambiguousv2.d, * testsuite/ld-powerpc/ambiguousv2b.d, * testsuite/ld-powerpc/tlsexe.r, * testsuite/ld-powerpc/tlsexe32.r, * testsuite/ld-powerpc/tlsexetoc.r, * testsuite/ld-powerpc/tlsso.r, * testsuite/ld-powerpc/tlsso32.r, * testsuite/ld-powerpc/tlstocso.r, * testsuite/ld-powerpc/vle-multiseg-1.d, * testsuite/ld-powerpc/vle-multiseg-2.d, * testsuite/ld-powerpc/vle-multiseg-3.d, * testsuite/ld-s390/tlsbin.rd, * testsuite/ld-s390/tlsbin_64.rd, * testsuite/ld-s390/tlspic.rd, * testsuite/ld-s390/tlspic_64.rd, * testsuite/ld-sh/ld-r-1.d, * testsuite/ld-sh/sh64/gotplt.d, * testsuite/ld-sh/shared-1.d, * testsuite/ld-sh/tlsbin-2.d, * testsuite/ld-sh/tlspic-2.d, * testsuite/ld-sparc/gotop32.rd, * testsuite/ld-sparc/gotop64.rd, * testsuite/ld-sparc/tlssunpic32.rd, * testsuite/ld-sparc/tlssunpic64.rd, * testsuite/ld-sparc/vxworks1-lib.rd, * testsuite/ld-tic6x/shlib-app-1.rd, * testsuite/ld-tic6x/shlib-app-1b.rd, * testsuite/ld-tic6x/shlib-app-1r.rd, * testsuite/ld-tic6x/shlib-app-1rb.rd, * testsuite/ld-tic6x/shlib-noindex.rd, * testsuite/ld-vax-elf/export-class-data.rd, * testsuite/ld-x86-64/pr13082-1a.d, * testsuite/ld-x86-64/pr13082-1b.d, * testsuite/ld-x86-64/pr13082-2a.d, * testsuite/ld-x86-64/pr13082-2b.d, * testsuite/ld-x86-64/pr13082-3a.d, * testsuite/ld-x86-64/pr13082-3c.d, * testsuite/ld-x86-64/pr13082-4a.d, * testsuite/ld-x86-64/pr13082-5a.d, * testsuite/ld-x86-64/pr13082-5b.d, * testsuite/ld-x86-64/pr13082-6a.d, * testsuite/ld-x86-64/pr13082-6b.d, * testsuite/ld-x86-64/pr17709-nacl.rd, * testsuite/ld-x86-64/pr17709.rd, * testsuite/ld-x86-64/pr19539a.d, * testsuite/ld-x86-64/pr19539b.d, * testsuite/ld-x86-64/pr19615.d, * testsuite/ld-x86-64/pr19636-1a.d, * testsuite/ld-x86-64/pr19636-1d.d, * testsuite/ld-x86-64/pr19636-1e.d, * testsuite/ld-x86-64/pr19636-2a.d, * testsuite/ld-x86-64/pr19636-2e.d, * testsuite/ld-x86-64/pr19636-2f.d, * testsuite/ld-x86-64/pr19636-3a.d, * testsuite/ld-x86-64/pr19645.d, * testsuite/ld-x86-64/pr19807-2b.d, * testsuite/ld-x86-64/pr19807-2d.d, * testsuite/ld-x86-64/pr19827-nacl.rd, * testsuite/ld-x86-64/pr19827.rd, * testsuite/ld-x86-64/pr20253-4a.d, * testsuite/ld-x86-64/pr20253-4b.d, * testsuite/ld-x86-64/pr20253-4d.d, * testsuite/ld-x86-64/pr20253-4e.d, * testsuite/ld-x86-64/pr20253-5a.d, * testsuite/ld-x86-64/pr20253-5b.d, * testsuite/ld-x86-64/tlsbin-nacl.rd, * testsuite/ld-x86-64/tlsbin.rd, * testsuite/ld-x86-64/tlspic-nacl.rd, * testsuite/ld-x86-64/tlspic.rd, * testsuite/ld-x86-64/tlspic2-nacl.rd: Update for pluralization fixes. commit 992a06eea4acfb674659a0ce19b5fb9c985e9bc1 Author: Alan Modra Date: Mon Nov 6 19:44:02 2017 +1030 gas and ld pluralization fixes gas/ * as.c (main): Properly pluralize messages. * frags.c (frag_grow): Likewise. * read.c (emit_expr_with_reloc, emit_expr_fix): Likewise. (parse_bitfield_cons): Likewise. * write.c (fixup_segment, compress_debug, write_contents): Likewise. (relax_segment): Likewise. * config/tc-arm.c (s_arm_elf_cons): Likewise. * config/tc-cr16.c (l_cons): Likewise. * config/tc-i370.c (i370_elf_cons): Likewise. * config/tc-m68k.c (m68k_elf_cons): Likewise. * config/tc-msp430.c (msp430_operands): Likewise. * config/tc-s390.c (s390_elf_cons, s390_literals): Likewise. * config/tc-mcore.c (md_apply_fix): Likewise. * config/tc-tic54x.c (md_assemble): Likewise. * config/tc-xtensa.c (xtensa_elf_cons): Likewise. (xg_expand_assembly_insn): Likewise. * config/xtensa-relax.c (build_transition): Likewise. ld/ * ldlang.c (lang_size_sections_1): Properly pluralize messages. (lang_check_section_addresses): Likewise. commit f3ce9b3a00229e5c6087180a74bf533d0e5201f3 Author: Alan Modra Date: Mon Nov 6 21:30:12 2017 +1030 Require ngettext in test of system gettext implementation If binutils is going to use ngettext, then we'd better arrange for intl/ to be compiled if the system gettext lacks ngettext. * configure.ac: Invole AM_GNU_GETTEXT with need_ngettext. * configure: Regenerate. * aclocal.m4: Regenerate. commit 6003e27e764ff62c1269a3ac6b5806b3fa3a1740 Author: Alan Modra Date: Mon Nov 6 15:20:00 2017 +1030 ngettext support binutils has lacked proper pluralization of output messages for a long time, for example, readelf will display information about a section that "contains 1 entries" or "There are 1 section headers". Fixing this properly requires us to use ngettext, because other languages have different rules to English. This patch defines macros for ngettext and friends to handle builds with --disable-nls, and tidies the existing nls support. I've redefined gettext rather than just defining "_" as dgettext in bfd and opcodes in case someone wants to use gettext there (which might conceivably happen with generated code). bfd/ * sysdep.h: Formatting, comment fixes. (gettext, ngettext): Redefine when ENABLE_NLS. (ngettext, dngettext, dcngettext): Define when !ENABLE_NLS. (_): Define using gettext. (textdomain, bindtextdomain): Use safer "do nothing". * hosts/alphavms.h (textdomain, bindtextdomain): Likewise. (ngettext, dngettext, dcngettext): Define when !ENABLE_NLS. opcodes/ * opintl.h: Formatting, comment fixes. (gettext, ngettext): Redefine when ENABLE_NLS. (ngettext, dngettext, dcngettext): Define when !ENABLE_NLS. (_): Define using gettext. (textdomain, bindtextdomain): Use safer "do nothing". binutils/ * sysdep.h (textdomain, bindtextdomain): Use safer "do nothing". (ngettext, dngettext, dcngettext): Define when !ENABLE_NLS. gas/ * asintl.h (textdomain, bindtextdomain): Use safer "do nothing". (ngettext, dngettext, dcngettext): Define when !ENABLE_NLS. gold/ * system.h (textdomain, bindtextdomain): Use safer "do nothing". (ngettext, dngettext, dcngettext): Define when !ENABLE_NLS. ld/ * ld.h (textdomain, bindtextdomain): Use safer "do nothing". (ngettext, dngettext, dcngettext): Define when !ENABLE_NLS. commit 84d5321fdfdc5c086734f441fb31fa9ace2e86aa Author: GDB Administrator Date: Tue Nov 7 00:00:21 2017 +0000 Automatic date update in version.in commit 635dc5b2e5cda5b18d32c4b0f6c19cba3ef05c67 Author: Luis Machado Date: Mon Nov 6 15:39:09 2017 -0200 Update my e-mail address. gdb/ChangeLog: 2017-11-06 Luis Machado * MAINTAINERS (Write After Approval): Update my e-mail address. commit 556e5da51349d00307bc05b7a6a813f71ac58664 Author: Pedro Alves Date: Mon Nov 6 15:36:47 2017 +0000 Simplify child_terminal_inferior The comment about Lynx in child_terminal_init reads a bit odd, since it's not exactly clear what "This" in "This is for Lynx" is referring to. Looking back in history makes it clearer. When the comment was originally added, in commit 91ecc8efa9b9, back in 1994, the code looked like this: ~~~ #ifdef PROCESS_GROUP_TYPE #ifdef PIDGET /* This is for Lynx, and should be cleaned up by having Lynx be a separate debugging target with a version of target_terminal_init_inferior which passes in the process group to a generic routine which does all the work (and the non-threaded child_terminal_init_inferior can just pass in inferior_pid to the same routine). */ inferior_process_group = PIDGET (inferior_pid); #else inferior_process_group = inferior_pid; #endif #endif ~~~ So this looked like it was about when GDB was growing support for multi-threading, and inferior_pid was still a single int for most ports. Eventually we got ptid_t, so the comment isn't really useful today. Particularly more so since we no longer support Lynx as a GDB host. The only caller left of child_terminal_init_with_pgrp is gnu-nat.c (the Hurd), and that target uses fork-child, so when we reach gnu_terminal_init after spawning a new child, the current inferior must already have the PID set, and the child must be a process group leader. We can't add a 'getpgid(inf->pid) == inf->pid' assertion to child_terminal_init though (like a previous version of this patch was doing [1]), because child_terminal_init is also reached after attaching to a process. If we did, the new gdb.base/attach-non-pgrp-leader.exp test would fail, with: (gdb) attach 12415 Attaching to program: build/gdb/testsuite/outputs/gdb.base/attach-non-pgrp-leader/attach-non-pgrp-leader, process 12415 src/gdb/inflow.c:180: internal-error: void child_terminal_init(target_ops*): Assertion `getpgid (inf->pid) == inf->pid' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) FAIL: gdb.base/attach-non-pgrp-leader.exp: child: attach to child (GDB internal error) I'm not making GDB save the pgid for attached processes with getpgid for now, because the saved process group affects other things which I'm leaving for following patches, like e.g., the "interrupt" command. [1] - https://sourceware.org/ml/gdb-patches/2017-11/msg00039.html gdb/ChangeLog: 2017-11-06 Pedro Alves * gnu-nat.c (gnu_terminal_init): Delete. (gnu_target): Don't install gnu_terminal_init. * inflow.c (child_terminal_init_with_pgrp): Delete, merged with ... (child_terminal_init): ... this function. commit 46f67f80ddfeea11d4a8134b347c74581faff8f6 Author: Pedro Alves Date: Mon Nov 6 15:36:47 2017 +0000 Test attaching to a process that isn't a process group leader The patch at was proposing to add an assertion to child_terminal_init that turns out would fail if you tried to attach to a process that isn't a process group leader. Since the testsuite failed to catch the problem, this commit adds a new testcase that would catch it, like: (gdb) attach 12415 Attaching to program: build/gdb/testsuite/outputs/gdb.base/attach-non-pgrp-leader/attach-non-pgrp-leader, process 12415 src/gdb/inflow.c:180: internal-error: void child_terminal_init(target_ops*): Assertion `getpgid (inf->pid) == inf->pid' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) FAIL: gdb.base/attach-non-pgrp-leader.exp: child: attach to child (GDB internal error) gdb/testsuite/ChangeLog: 2017-11-06 Pedro Alves * gdb.base/attach-non-pgrp-leader.c: New. * gdb.base/attach-non-pgrp-leader.exp: New. commit d1928160a324c1b6cd14afeecd4c81ab927883fa Author: Pedro Alves Date: Mon Nov 6 16:19:12 2017 +0000 Don't check termio.h and sgtty.h in common/common.m4 either common/common.m4 still had checks for termio.h/sgtty.h that are stale now. Remove them. gdb/ChangeLog: 2017-11-06 Pedro Alves * common/common.m4 (GDB_AC_COMMON): No longer check termio.h nor sgtty.h. * config.in, configure: Regenerate. gdb/gdbserver/ChangeLog: 2017-11-06 Pedro Alves * config.in, configure: Regenerate. commit 6aa899ce25d73c397748e4df926da3fd7e5870e5 Author: Pedro Alves Date: Mon Nov 6 15:36:47 2017 +0000 Eliminate STOP_SIGNAL, use SIGTSTP directly The STOP_SIGNAL macro was originally added for Convex Unix (https://en.wikipedia.org/wiki/Convex_Computer). In: git show 7a67dd45ca1c:gdb/m-convex.h we see: ~~~ /* Use SIGCONT rather than SIGTSTP because convex Unix occasionally turkeys SIGTSTP. I think. */ #define STOP_SIGNAL SIGCONT ~~~ That's gdb-3.5, 1990... In gdb/ChangeLog-3.x we see: ~~~ Tue Apr 18 13:43:37 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) Various changes involved in 1) getting gdb to work on the convex, [...] Made whatever signal indicates a stop configurable (via macro STOP_SIGNAL). (main): Setup use of above as a signal handler. Added check for "-nw" in args already processed. (command_line_input): SIGTSTP ==>STOP_SIGNAL. ~~~ Support for Convex Unix is long gone, and nothing else overrides STOP_SIGNAL. So just use SIGTSTP directly, removing a little obfuscation. (I don't really understand why we override [1] readline's SIGTSTP handler (only) when reading scripts (and then fail to restore it properly, assuming SIG_DFL...), but I'll leave that for another pass. [1] - Actually, starting with readline 6.3, readline is no longer installing its handlers while GDB is in control...) gdb/ChangeLog: 2017-11-06 Pedro Alves * event-top.c: Check SIGTSTP instead of STOP_SIGNAL thoughout. (async_init_signals): Adjust. (handle_stop_sig): Rename to ... (handle_sigtstp): ... this. (async_stop_sig): Rename to ... (async_sigtstp_handler): ... this, and delete STOP_SIGNAL != SIGTSTP path. * event-top.h: Move signal.h include to the top. Check SIGTSTP instead of STOP_SIGNAL thoughout. (handle_stop_sig): Rename to ... (handle_sigtstp): ... this. * top.c (command_line_input): Replace STOP_SIGNAL -> SIGTSTP. commit a94799ac1e430404fda5cbc181406cf5f3630108 Author: Pedro Alves Date: Mon Nov 6 15:36:46 2017 +0000 Don't set terminal flags twice in a row I find this odd 'set flags twice' ancient code and comment annoyingly distracting. It may well be that the reason for the double-set was simply a copy/paste mistake, and that we've been doing this for decades [1] for no good reason. Let's just get rid of it, and if we find a real reason, add it back with a comment explaining why it's necessary. [1] This double-set was already in gdb 2.4 / 1988, the oldest release we have sources for, and imported in git. From 'git show 7b4ac7e1ed2c inflow.c': +void +terminal_inferior () +{ + if (terminal_is_ours) /* && inferior_thisrun_terminal == 0) */ + { + fcntl (0, F_SETFL, tflags_inferior); + fcntl (0, F_SETFL, tflags_inferior); The "is there a reason" comment was added in 1993, by: commit a88797b5eadf31e21804bc820429028bf708fbcd Author: Fred Fish AuthorDate: Thu Aug 5 01:33:45 1993 +0000 gdb/ChangeLog: 2017-11-06 Pedro Alves * inflow.c (child_terminal_inferior, child_terminal_ours_1): No longer set flags twice in row. commit 726e13564b615e5d8e9540b509623e58dfce2012 Author: Pedro Alves Date: Mon Nov 6 15:36:46 2017 +0000 Assume termios is available, remove support for termio and sgtty This commit garbage collects the termio and sgtty support. GDB's terminal handling code still has support for the old termio and sgtty interfaces in addition to termios. However, I think it's pretty safe to assume that for a long, long time, Unix-like systems provide termios. GNU/Linux, Solaris, Cygwin, AIX, DJGPP, macOS and the BSDs all have had termios.h for many years. Looking around the web, I found discussions about FreeBSD folks trying to get rid of old sgtty.h a decade ago: https://lists.freebsd.org/pipermail/freebsd-hackers/2007-March/019983.html So I think support for termio and sgtty in GDB is just dead code that is never compiled anywhere and is just getting in the way. For example, serial_noflush_set_tty_state and the raw<->cooked concerns mentioned in inflow.c only exist because of sgtty (see hardwire_noflush_set_tty_state). Regtested on GNU/Linux. Confirmed that I can still build Solaris, DJGPP and AIX GDB and that the resulting GDBs still include the termios.h-guarded code. Confirmed mingw-w64 GDB still builds and skips the termios.h-guarded code. gdb/ChangeLog: 2017-11-06 Pedro Alves * Makefile.in (SER_HARDWIRE): Update comment. (HFILES_NO_SRCDIR): Remove gdb_termios.h. * common/gdb_termios.h: Delete file. * common/job-control.c: Include termios.h and unistd.h instead of gdb_termios.h. (gdb_setpgid): Remove HAVE_TERMIOS || TIOCGPGRP preprocessor check. (have_job_control): Check HAVE_TERMIOS_H instead of HAVE_TERMIOS. Remove sgtty code. * configure.ac: No longer check for termio.h and sgtty.h. * configure: Regenerate. * inflow.c: Include termios.h instead of gdb_termios.h. Replace PROCESS_GROUP_TYPE checks with HAVE_TERMIOS_H checks throughout. Replace PROCESS_GROUP_TYPE references with pid_t references throughout. (gdb_getpgrp): Delete. (set_initial_gdb_ttystate): Use tcgetpgrp instead of gdb_getpgrp. (child_terminal_inferior): Remove comment. Remove sgtty code. (child_terminal_ours_1): Use tcgetpgrp directly instead of gdb_getpgrp. Use serial_set_tty_state instead aof serial_noflush_set_tty_state. Remove sgtty code. * inflow.h: Include unistd.h instead of gdb_termios.h. Replace PROCESS_GROUP_TYPE check with HAVE_TERMIOS_H check. (inferior_process_group): Now returns pid_t. * ser-base.c (ser_base_noflush_set_tty_state): Delete. * ser-base.h (ser_base_noflush_set_tty_state): Delete. * ser-event.c (serial_event_ops): Update. * ser-go32.c (dos_noflush_set_tty_state): Delete. (dos_ops): Update. * ser-mingw.c (hardwire_ops, tty_ops, pipe_ops, tcp_ops): Update. * ser-pipe.c (pipe_ops): Update. * ser-tcp.c (tcp_ops): Update. * ser-unix.c: Include termios.h instead of gdb_termios.h. Remove HAVE_TERMIOS checks. [HAVE_TERMIO] (struct hardwire_ttystate): Delete. [HAVE_SGTTY] (struct hardwire_ttystate): Delete. (get_tty_state, set_tty_state): Drop termio and sgtty code, and assume termios. (hardwire_noflush_set_tty_state): Delete. (hardwire_print_tty_state, hardwire_drain_output) (hardwire_flush_output, hardwire_flush_input) (hardwire_send_break, hardwire_raw, hardwire_setbaudrate) (hardwire_setstopbits, hardwire_setparity): Drop termio and sgtty code, and assume termios. (hardwire_ops): Update. (_initialize_ser_hardwire): Remove HAVE_TERMIOS check. * serial.c (serial_noflush_set_tty_state): Delete. * serial.h (serial_noflush_set_tty_state): Delete. (serial_ops::noflush_set_tty_state): Delete. gdb/gdbserver/ChangeLog: 2017-11-06 Pedro Alves * configure.ac: No longer check for termio.h and sgtty.h. * configure: Regenerate. * remote-utils.c: Include termios.h instead of gdb_termios.h. (remote_open): Check HAVE_TERMIOS_H instead of HAVE_TERMIOS. Remove termio and sgtty code. commit 1cfb73dbb7503d1cfb088c14d1125a5030a1f386 Author: Ulrich Weigand Date: Mon Nov 6 16:04:03 2017 +0100 Target FP: Merge doublest.c and dfp.c into target-float.c Now that all target FP operations are performed via target-float.c, this file remains the sole caller of functions in doublest.c and dfp.c. Therefore, this patch merges the latter files into the former and makes all their function static there. gdb/ChangeLog: 2017-11-06 Ulrich Weigand * Makefile.in (SFILES): Remove doublest.c and dfp.c. (HFILES_NO_SRCDIR): Remove doublest.h and dfp.h. (COMMON_OBS): Remove doublest.o and dfp.o. Do not build target-float.c (instead of doublest.c) with -Wformat-nonliteral. * doublest.c: Remove file. * doublest.h: Remove file. * dfp.c: Remove file. * dfp.h: Remove file. * target-float.c: Do not include "doublest.h" and "dfp.h". (DOUBLEST): Move here from doublest.h. (enum float_kind): Likewise. (FLOATFORMAT_CHAR_BIT): Likewise. (FLOATFORMAT_LARGEST_BYTES): Likewise. (floatformat_totalsize_bytes): Move here from doublest.c. Make static. (floatformat_precision): Likewise. (floatformat_normalize_byteorder, get_field, put_field): Likewise. (floatformat_is_negative, floatformat_classify, floatformat_mantissa): Likewise. (host_float_format, host_double_format, host_long_double_format): Likewise. (floatformat_to_string, floatformat_from_string): Likewise. (floatformat_to_doublest): Likewise. Also, inline the original convert_floatformat_to_doublest. (floatformat_from_doublest): Likewise. Also, inline the original convert_floatformat_from_doublest. Include "dpd/decimal128.h", "dpd/decimal64.h", and "dpd/decimal32.h". (MAX_DECIMAL_STRING): Move here from dfp.c. (match_endianness): Likewise. (set_decnumber_context, decimal_check_errors): Likewise. (decimal_from_number, decimal_to_number): Likewise. (decimal_to_string, decimal_from_string): Likewise. Make static. (decimal_from_longest, decimal_from_ulongest): Likewise. (decimal_to_longest): Likewise. (decimal_binop, decimal_is_zero, decimal_compare): Likewise. (decimal_convert): Likewise. commit b07e9c466ed24af614090ac42d6730a291608f69 Author: Ulrich Weigand Date: Mon Nov 6 16:02:33 2017 +0100 Target FP: Remove unused floating-point routines This patch removes the following routines, which now have no remaining users in GDB: - extract_typed_floating - store_typed_floating - convert_typed_floating - decimal_from_doublest - decimal_to_doublest - value_as_double - unpack_double - value_from_double - value_from_decfloat This completes removal of DOUBLEST from all files except doublest.{c,h} and target-float.c. gdb/ChangeLog: 2017-11-06 Ulrich Weigand * doublest.c: Do not include "gdbtypes.h". (extract_typed_floating): Remove. (store_typed_floating): Remove. (convert_typed_floating): Remove. * doublest.h (struct type): Remove. (DOUBLEST_PRINT_FORMAT): Remove. (DOUBLEST_SCAN_FORMAT): Remove. (extract_typed_floating): Remove. (store_typed_floating): Remove. (convert_typed_floating): Remove. * dfp.c (decimal_from_doublest): Remove. (decimal_to_doublest): Remove. * dfp.h: Do not include "doublest.h". (decimal_from_doublest): Remove. (decimal_to_doublest): Remove. * value.c: Do not include "doublest.h" and "dfp.h". (value_as_double): Remove. (unpack_double): Remove. (value_from_double): Remove. (value_from_decfloat): Remove. * value.h: Do not include "doublest.h". (value_as_double): Remove. (unpack_double): Remove. (value_from_double): Remove. (value_from_decfloat): Remove. commit 3b2ca8248cae742c00cb4e94138edf1403d43d47 Author: Ulrich Weigand Date: Mon Nov 6 16:01:37 2017 +0100 Target FP: Remove convert_typed_floating from tdep files This patch mechanically replaces convert_typed_floating with the equivalent target_float_convert throughout tdep files, to prepare for the removal of doublest.{c,h}. No functional change intended. gdb/ChangeLog: 2017-11-06 Ulrich Weigand * i386-tdep.c: Include "target-float.h". Do not include "doublest.h". (i386_extract_return_value): Use target_float_convert. (i386_store_return_value): Likewise. * i387-tdep.c (i387_register_to_value): Use target_float_convert. (i387_value_to_register): Likewise. * ia64-tdep.c: Include "target-float.h". Do not include "doublest.h". (ia64_register_to_value): Use target_float_convert. (ia64_value_to_register): Likewise. (ia64_extract_return_value): Likewise. (ia64_store_return_value): Likewise. (ia64_push_dummy_call): Likewise. * m68k-tdep.c: Include "target-float.h". (m68k_register_to_value): Use target_float_convert. (m68k_value_to_register): Likewise. (m68k_svr4_extract_return_value): Likewise. (m68k_svr4_store_return_value): Likewise. * ppc-sysv-tdep.c: Include "target-float.h". (ppc_sysv_abi_push_dummy_call): Use target_float_convert. (do_ppc_sysv_return_value): Likewise. (ppc64_sysv_abi_push_freg): Likewise. (ppc64_sysv_abi_return_value_base): Likewise. * rs6000-aix-tdep.c: Include "target-float.h". (rs6000_push_dummy_call): Use target_float_convert. (rs6000_return_value): Likewise. * rs6000-lynx178-tdep.c: Include "target-float.h". (rs6000_lynx178_push_dummy_call): Use target_float_convert. (rs6000_lynx178_return_value): Likewise. * rs6000-tdep.c: Include "target-float.h". Do not include "doublest.h". (rs6000_register_to_value): Use target_float_convert. (rs6000_value_to_register): Likewise. * arm-tdep.c: Include "target-float.h". Do not include "doublest.h". (arm_extract_return_value): Use target_float_convert. (arm_store_return_value): Likewise. * sh-tdep.c: Include "target-float.h". Do not include "doublest.h". (sh_register_convert_to_virtual): Use target_float_convert. (sh_register_convert_to_raw): Likewise. * sh64-tdep.c: Include "target-float.h". (sh64_extract_return_value): Use target_float_convert. (sh64_register_convert_to_virtual): Likewise. (sh64_register_convert_to_raw): Likewise. Fix argument types. commit 14ad9311720fc17bd646b2ff08483fe60a489959 Author: Ulrich Weigand Date: Mon Nov 6 16:00:47 2017 +0100 Target FP: Handle interfaces to scripting languages The last remaing use for DOUBLEST is in the code that interfaces to the scripting languages (Python and Guile). The problem here is that we expose interfaces to convert a GDB value to and from native values of floating-point type in those languages, and those by definition use the host floating-point format. While we cannot completely eliminate conversions to/from the host floating-point format here, we still need to get rid of the uses of value_as_double / value_from_double, since those will go away. This patch implements two new target-float.c routine: - target_float_to_host_double - target_float_from_host_double which convert to/from a host "double". Those should only ever be used where a host "double" is mandated by an external interface. gdb/ChangeLog: 2017-11-06 Ulrich Weigand * target-float.c (floatformat_to_host_double): New function. (floatformat_from_host_double): Likewise. (target_float_to_host_double): Likewise. (target_float_from_host_double): Likewise. * target-float.h (target_float_to_host_double): Add prototype. (target_float_from_host_double): Likewise. * guile/scm-value.c: Include "target-float.h". (gdbscm_value_to_real): Use target_float_to_host_double. Handle integer source values via value_as_long. * guile/scm-math.c: Include "target-float.h". Do not include "doublest.h", "dfp.h", and "expression.h". (vlscm_convert_typed_number): Use target_float_from_host_double. (vlscm_convert_number): Likewise. * python/py-value.c (valpy_float): Use target_float_to_host_double. (convert_value_from_python): Use target_float_from_host_double. commit 50eff16b85073287b1b184a257a8fd80e960fe02 Author: Ulrich Weigand Date: Mon Nov 6 15:59:36 2017 +0100 Target FP: Perform Ada fixed-point scaling in target format One of the few still remaining uses of DOUBLEST in GDB is the Ada front-end code that handles scaling of Ada fixed-point types. The target format for those types is some integer format; to convert those values to standard floating-point representation, that integer needs to be multiplied by a rational scale factor, given as a pair of numerator and denominator. To avoid having to deal with long integer arithmetic, the current Ada front-end code currently performs those scaling operations in host DOUBLEST arithmetic. To eliminate this use of DOUBLEST, this patch changes the front-end to instead perform those operations in the *target* floating-point format (chosing to use the target "long double"). The implementation is mostly straight-forward, using value_cast and value_binop to perform the target operations. Scanning in the scale numerator and denominator is now done into a host "long long" instead of a DOUBLEST, which should be large enough to hold all possible values. (Otherwise, this can be replaced by target-format target_float_from_string operations as well.) Printing fixed-point types and values should be completely unchanges, using target_float_to_string with the same format strings as current code. gdb/ChangeLog: 2017-11-06 Ulrich Weigand * ada-lang.c (cast_to_fixed): Reimplement in target arithmetic. (cast_from_fixed): Likewise. (ada_scaling_type): New function. (ada_delta): Return value instead of DOUBLEST. Perform target arithmetic instead of host arithmetic. (scaling_factor): Rename to ... (ada_scaling_factor) ... this. Make non-static. Return value instead of DOUBLEST. Perform target arithmetic instead of host arithmetic. (ada_fixed_to_float): Remove. (ada_float_to_fixed): Remove. * ada-lang.h (ada_fixed_to_float): Remove. (ada_float_to_fixed): Remove. (ada_delta): Return value instead of DOUBLEST. (ada_scaling_factor): Add prototype. * ada-typeprint.c: Include "target-float.h". (print_fixed_point_type): Perform target arithmetic instead of host arithmetic. * ada-valprint.c: Include "target-float.h". (ada_val_print_num): Perform target arithmetic instead of host arithmetic for fixed-point types. commit 66c02b9ed1eabf1d7981c0c27ec9fd3c17fc5d35 Author: Ulrich Weigand Date: Mon Nov 6 15:58:46 2017 +0100 Target FP: Add binop and compare routines to target-float.{c,h} This patch adds the following target floating-point routines: - target_float_binop - target_float_compare which call the equivalent decimal_ routines to handle decimal FP, and call helper routines that currently still go via DOUBLEST to handle binary FP (derived from current valarith.c code). These routines are used to handle both binary and decimal FP types in scalar_binop, value_equal, and value_less, mostly following the method currently used for decimal FP. The existing value_args_as_decimal helper is renamed to value_args_as_target_float and extended to handle both binary and decimal types. The unary operations value_pos and value_neg are also simplified, the former by using a simple copy for all scalar types, the latter by using value_binop (... BINOP_SUB) to implement negation as subtraction from zero. ChangeLog: 2017-11-06 Ulrich Weigand * target-float.c: Include . (floatformat_binop): New function. (floatformat_compare): Likewise. (target_float_binop): Likewise. (target_float_compare): Likewise. * target-float.h: Include "expression.h". (target_float_binop): Add prototype. (target_float_compare): Likewise. * valarith.c: Do not include "doublest.h" and "dfp.h". Include "common/byte-vector.h". (value_args_as_decimal): Remove, replace by ... (value_args_as_target_float): ... this function. Handle both binary and decimal target floating-point formats. (scalar_binop): Handle both binary and decimal FP using value_args_as_target_float and target_float_binop. (value_equal): Handle both binary and decimal FP using value_args_as_target_float and target_float_compare. (value_less): Likewise. (value_pos): Handle all scalar types as simple copy. (value_neg): Handle all scalar types via BINOP_SUB from 0. * dfp.c (decimal_binop): Throw error instead of internal_error when called with an unsupported operation code. commit 50637b26f85dc3e59b616f1b01ca8885cf98f0b4 Author: Ulrich Weigand Date: Mon Nov 6 15:57:31 2017 +0100 Target FP: Add conversion routines to target-float.{c,h} This patch adds the following conversion routines: - target_float_to_longest - target_float_from_longest - target_float_from_ulongest - target_float_convert which call the equivalent decimal_ routines to handle decimal FP, and call helper routines that currently still go via DOUBLEST to handle binary FP. The target_float_convert routine not only handles BFP<->BFP and DFP<->DFP conversions, but also BFP<->DFP, which are implemented by converting to a string and back. These helpers are used in particular to implement conversion from and to FP in value_cast, without going through DOUBLEST there. In order to implement this for the FP<-integer case, the pack_long / pack_unsigned_long routines are extended to support floating-point values as output (thereby allowing use of value_from_[u]longest with a floating-point target type). This latter change also allows simplification of value_one. gdb/ChangeLog: 2017-11-06 Ulrich Weigand * target-float.c (floatformat_to_longest): New function. (floatformat_from_longest, floatformat_from_ulongest): Likewise. (floatformat_convert): Likewise. (target_float_to_longest): Likewise. (target_float_from_longest, target_float_from_ulongest): Likewise. (target_float_convert): Likewise. * target-float.h (target_float_to_longest): Add prototype. (target_float_from_longest, target_float_from_ulongest): Likewise. (target_float_convert): Likewise. * value.c (unpack_long): Use target_float_to_longest. (pack_long): Allow FP types. Use target_float_from_longest. (pack_unsigned_long): Likewise using target_float_from_ulongest. * valops.c: Include "target-float.h". Do not include "dfp.h". (value_cast): Handle conversions to FP using target_float_convert, value_from_ulongest, and value_from_longest. (value_one): Use value_from_longest for FP types as well. commit f69fdf9bca80ac703890a51e124e408cbccbb743 Author: Ulrich Weigand Date: Mon Nov 6 15:56:35 2017 +0100 Target FP: Add string routines to target-float.{c,h} This adds target_float_to_string and target_float_from_string, which dispatch to the corresponding floatformat_ or decimal_ routines. Existing users of those routines are changed to use the new target-float routines instead (most of those places already handle both binary and decimal FP). In addition, two other places are changes to use target_float_from_string: - define_symbol in stabsread.c, when parsing a floating-point literal from stabs debug info - gdbarch-selftest.c when initializing a target format values (to eliminate use of DOUBLEST there). gdb/ChangeLog: 2017-11-06 Ulrich Weigand * target-float.c (target_float_to_string): New function. (target_float_from_string): New function. * target-float.h (target_float_to_string): Add prototype. (target_float_from_string): Add prototype. * valprint.c: Include "target-float.h". Do not include "doublest.h" and "dfp.h". (print_floating): Use target_float_to_string. * printcmd.c: Include "target-float.h". Do not include "dfp.h". (printf_floating): Use target_float_to_string. * i387-tdep.c: Include "target-float.h". Do not include "doublest.h". (print_i387_value): Use target_float_to_string. * mips-tdep.c: Include "target-float.h". (mips_print_fp_register): Use target_float_to_string. * sh64-tdep.c: Include "target-float.h". (sh64_do_fp_register): Use target_float_to_string. * parse.c: Include "target-float.h". Do not include "doublest.h" and "dfp.h". (parse_float): Use target_float_from_string. * stabsread.c: Include "target-float.h". Do not include "doublest.h". (define_symbol): Use target_float_from_string. * gdbarch-selftests.c: Include "target-float.h". (register_to_value_test): Use target_float_from_string. commit 701000146a01f1966c59f50d7b638915917b6378 Author: Ulrich Weigand Date: Mon Nov 6 15:55:11 2017 +0100 Target FP: Introduce target-float.{c,h} This patch introduces the new set of target floating-point handling routines in target-float.{c,h}. In the end, the intention is that this file will contain support for all operations in target FP format, fully replacing both the current doublest.{c,h} and dfp.{c,h}. To begin with, this patch only adds a target_float_is_zero routine, which handles the equivalent of decimal_is_zero for both binary and decimal FP. For the binary case, to avoid conversion to DOUBLEST, this is implemented using the floatformat_classify routine. However, it turns out that floatformat_classify actually has a bug (it was not used to check for zero before), so this is fixed as well. The new routine is used in both value_logical_not and valpy_nonzero. There is one extra twist: the code previously used value_as_double to convert to DOUBLEST and then compare against zero. That routine performs an extra task: it detects invalid floating-point values and raises an error. In any place where value_as_double is removed in favor of some target-float.c routine, we need to replace that check. To keep this check centralized in one place, I've added a new routine is_floating_value, which returns a boolean determining whether a value's type is floating point (binary or decimal), and if so, also performs the validity check. Since we need to check whether a value is FP before calling any of the target-float routines anyway, this seems a good place to add the check without much code size overhead. In some places where we only want to check for floating-point types and not perform a validity check (e.g. for the *output* of an operation), we can use the new is_floating_type routine (in gdbarch) instead. The validity check itself is done by a new target_float_is_valid routine in target-float, encapsulating floatformat_is_valid. ChangeLog: 2017-11-06 Ulrich Weigand * Makefile.c (SFILES): Add target-float.c. (HFILES_NO_SRCDIR): Add target-float.h. (COMMON_OBS): Add target-float.o. * target-float.h: New file. * target-float.c: New file. * doublest.c (floatformat_classify): Fix detection of float_zero. * gdbtypes.c (is_floating_type): New function. * gdbtypes.h (is_floating_type): Add prototype. * value.c: Do not include "floatformat.h". (unpack_double): Use target_float_is_valid. (is_floating_value): New function. * value.h (is_floating_value): Add prototype- * valarith.c: Include "target-float.h". (value_logical_not): Use target_float_is_zero. * python/py-value.c: Include "target-float.h". (valpy_nonzero): Use target_float_is_zero. commit 74be0bdc3bf8ae5b2e70992730539bca1d1b43ee Author: GDB Administrator Date: Mon Nov 6 00:00:29 2017 +0000 Automatic date update in version.in commit 26a9301057457ae576b51b8127bb805b4e484a6b Author: Alan Modra Date: Sun Nov 5 19:52:13 2017 +1030 Proper bound check in _bfd_doprnt_scan While an abort after storing out of bounds by one to an array in our caller is probably OK in practice, it's better to check before storing. PR 22397 * bfd.c (_bfd_doprnt_scan): Check args index before storing, not after. commit 7167fe4c70ea74f1bb74a6130bb7e6bf5ca354ee Author: Alan Modra Date: Sun Nov 5 16:22:55 2017 +1030 PR22397, BFD internal error when message locale isn't C This adds positional parameter support to the bfd error handler, something that was lost 2017-04-13 when _doprnt was added with commit c08bb8dd. The number of format args is now limited to 9, which is sufficient for current _bfd_error_handler messages. If someone exceeds 9 args they get the joy of modifying this code to support more args (shouldn't be too difficult). PR 22397 * bfd.c (union _bfd_doprnt_args): New. (PRINT_TYPE): Add FIELD arg. Take value from args. (_bfd_doprnt): Replace ap parameter with args. Adjust all PRINT_TYPE invocations and reading of format args to suit. Move "%%" handling out of switch handling args. Support positional parameters. (_bfd_doprnt_scan): New function. (error_handler_internal): Call _bfd_doprnt_scan and read args. commit 0724bd460babc0c3c31aa67b5f8385a4cb5279f9 Author: GDB Administrator Date: Sun Nov 5 00:00:26 2017 +0000 Automatic date update in version.in commit f15d0b545b9e9dada8d1398163693f67792e9e79 Author: Alan Modra Date: Sat Nov 4 13:41:29 2017 +1030 powerpc TLS in PIEs This patch removes unnecessary GOT IE TLS relocations in PIEs. Useful with --no-tls-optimize, or with an enormous TLS segment. With the default --tls-optimize in effect IE code sequences will be edited to LE under the same circumstances we can remove the GOT reloc. * elf32-ppc.c (got_entries_needed, got_relocs_needed): New functions. (allocate_dynrelocs, ppc_elf_size_dynamic_sections): Use them here. (ppc_elf_relocate_section): Don't output a dynamic relocation for IE GOT entries in an executable. * elf64-ppc.c (allocate_got): Trim unnecessary TPREL relocs. (ppc64_elf_size_dynamic_sections): Likewise. (ppc64_elf_relocate_section): Likewise. commit 98bbb1b86180324b278842d8d73c79cb5d76d349 Author: Alan Modra Date: Thu Nov 2 08:05:03 2017 +1030 PowerPC readonly_dynrelocs PowerPC64 lacked the mapfile textrel warning on finding dynamic relocs in read-only sections. This patch adds it, and tidies the readonly_dynrelocs interface. PowerPC doesn't need a SEC_ALLOC test because !SEC_ALLOC sections are excluded by check_relocs so will never have dyn_relocs. * elf32-ppc.c (readonly_dynrelocs): Delete info param. Update all callers. Don't bother with SEC_ALLOC test. Return section pointer. Move minfo call to.. (maybe_set_textrel): ..here. * elf64-ppc.c (readonly_dynrelocs): Return section pointer. (maybe_set_textrel): Call minfo to print textrel warning to map file. commit 2e684e75ae3939f5f14fb89ca8a300b610d093dd Author: Alan Modra Date: Thu Nov 2 12:09:34 2017 +1030 hppa-linux TLS relocs This patch fixes various problems with TLS relocations. 1) Report an error if a symbol has both TLS and normal GOT entries. 2) The GOT entry size calculation was obscure and made use of the fact that a symbol shouldn't have both normal and TLS GOT entries. 3) The second word of a GD GOT entry sometimes omitted a dynamic reloc, which was fine except that doing so makes it impossible for ld.so to differentiate GD and LD entries. Also, a NONE reloc was emitted. 4) Unnecessary relocs were emitted for GOT entries. 5) GOT relocs didn't take note of UNDEFWEAK_NO_DYNAMIC_RELOC. * elf32-hppa.c (enum _tls_type): Move. (struct elf32_hppa_link_hash_entry): Make tls_type a bitfield. (elf32_hppa_check_relocs): Set DF_STATIC_TLS only for shared libraries. Tidy tls_type handling. Set symbol tls_type for GOT_TLS_LDM too. (got_entries_needed, got_relocs_needed): New functions. (allocate_dynrelocs): Use them. (elf32_hppa_size_dynamic_sections): Likewise. (elf32_hppa_relocate_section): Delete bogus FIXME. Formatting. Correct code emitting relocs on GD/IE got entries. Report an error when a symbol has both normal and TLS GOT relocs. commit 127e8e9f62ed0e7145dfa1172c6253275fc150dd Author: Alan Modra Date: Tue Oct 31 18:13:03 2017 +1030 PR22394, hppa-linux-ld fails to emit dynamic relocations gcc -mfast-indirect-calls emits a function pointer initialization without a P% (plabel) modifier. ld does not create the necessary dynamic relocations for this to work. It turns out that the problem is caused by the non_got_ref symbol flag. This flag is set for non-pic by check_relocs to indicate that the symbol might need copy relocations or dynamic relocations. Later, the backend adjust_dynamic_symbol clears the flag to indicate dynamic relocations are needed, but leaves it set when copy relocations were created. The inversion in meaning is insane, but it's that way because the backend adjust_dynamic_symbol function doesn't get to look at all symbols.. Anyway, the insanity works for non-function symbols. However, the flag is left set on any function symbol with a dynamic relocation. This patch fixes the non_got_ref handling for function symbols, adds -z nocopyreloc for hppa-elf, reports where textrel occurs, and expands comments. The check_relocs change just stops creation of dyn_relocs we always threw away later. PR 22394 * elf32-hppa.c (elf32_hppa_check_relocs): Don't create dyn_relocs for plabels when non-pic. (maybe_set_textrel): New function. (readonly_dynrelocs): Move and rewrite. (elf32_hppa_adjust_dynamic_symbol): Use it. Don't create copy relocs when def_regular or -z nocopyreloc. Handle non_got_ref for functions. Expand non_got_ref comments. (elf32_hppa_size_dynamic_sections): Use maybe_set_textrel. commit ab4b1c4699fecd1f2461cecae108e7c583c15bc4 Author: Tom Tromey Date: Wed Nov 1 22:46:40 2017 -0600 Use std::vector in h8300-tdep.c This changes h8300-tdep.c to use std::vector, allowing the removal of a cleanup. gdb/ChangeLog 2017-11-04 Tom Tromey * h8300-tdep.c (h8300_push_dummy_call): Use std::vector. commit 454dafbdf2d1293a9b18a6fe9e9c9e0911eb740c Author: Tom Tromey Date: Wed Nov 1 22:32:45 2017 -0600 Introduce gdb_breakpoint_up This introduces gdb_breakpoint_up, a unique_ptr typedef that owns a breakpoint. It then changes set_momentary_breakpoint to return a gdb_breakpoint_up and fixes up the fallout. This then allows the removal of make_cleanup_delete_breakpoint. Once breakpoints are fully C++-ified, this typedef can be removed in favor of a plain std::unique_ptr. gdb/ChangeLog 2017-11-04 Tom Tromey * breakpoint.c (set_momentary_breakpoint): Return breakpoint_up. (until_break_command): Update. (new_until_break_fsm): Change argument types to breakpoint_up. (set_momentary_breakpoint_at_pc): Return breakpoint_up. (do_delete_breakpoint_cleanup, make_cleanup_delete_breakpoint): Remove. * infcmd.c (finish_forward): Update. * breakpoint.h (set_momentary_breakpoint) (set_momentary_breakpoint_at_pc): Return breakpoint_up. (make_cleanup_delete_breakpoint): Remove. (struct breakpoint_deleter): New. (breakpoint_up): New typedef. * infrun.c (insert_step_resume_breakpoint_at_sal_1): Update. (insert_exception_resume_breakpoint): Update. (insert_exception_resume_from_probe): Update. (insert_longjmp_resume_breakpoint): Update. * arm-linux-tdep.c (arm_linux_copy_svc): Update. * elfread.c (elf_gnu_ifunc_resolver_stop): Update. * infcall.c (call_function_by_hand_dummy): Update commit 331b71e5ee226cb5455969899274f0e43e83aa1e Author: Tom Tromey Date: Wed Nov 1 19:16:58 2017 -0600 Use unique_xmalloc_ptr in c_type_print_base This changes c_type_print_base to use unique_xmalloc_ptr, removing a cleanup. gdb/ChangeLog 2017-11-04 Tom Tromey * c-typeprint.c (c_type_print_base): Use gdb::unique_xmalloc_ptr. commit 9f584b37e36b67009fa23b6cffbec1bf691ef9ba Author: Tom Tromey Date: Wed Nov 1 19:11:20 2017 -0600 Remove cleanups from linux-tdep.c This removes some cleanups from linux-tdep.c, replacing them with def_vector or byte_vector as appropriate. gdb/ChangeLog 2017-11-04 Tom Tromey * linux-tdep.c (linux_core_info_proc_mappings): Use gdb::def_vector. (linux_get_siginfo_data): Return gdb::byte_vector. Remove "size" argument. (linux_corefile_thread): Update. (linux_make_corefile_notes): Remove unused variable. commit 779bc38eca950c7f3b64173e99e25f0c0edfbe3b Author: Tom Tromey Date: Wed Nov 1 18:52:30 2017 -0600 Use gdb::byte_vector in ppc-linux-tdep.c This removes a cleanup from ppc-linux-tdep.c, replacing it with gdb::byte_vector. gdb/ChangeLog 2017-11-04 Tom Tromey * ppc-linux-tdep.c (ppc_linux_get_syscall_number): Use gdb::byte_vector. commit ed2b3126d1828d55d57880c6b6045a4e58c05cde Author: Tom Tromey Date: Wed Nov 1 18:51:15 2017 -0600 Remove make_cleanup_free_objfile This replaces make_cleanup_free_objfile with std::unique_ptr. gdb/ChangeLog 2017-11-04 Tom Tromey * objfiles.c (do_free_objfile_cleanup): Remove. * compile/compile-object-load.c (compile_object_load): Update. * objfiles.h (make_cleanup_free_objfile): Remove. commit 7f6743fd09d0f3188dd9dcdf31acf81131f9bf1f Author: Tom Tromey Date: Wed Nov 1 16:37:27 2017 -0600 Use gdb::def_vector in sparc64-tdep.c This removes a cleanup from sparc64-tdep.c, replacing it with gdb::def_vector. gdb/ChangeLog 2017-11-04 Tom Tromey * sparc64-tdep.c (do_examine): Use gdb::def_vector. (adi_read_versions): Change "tags" to "gdb_byte *". (adi_print_versions): Likewise. commit c80049d3b615691dc902762d5d97551aa9664442 Author: Tom Tromey Date: Wed Nov 1 09:00:09 2017 -0600 Replace start_rbreak_breakpoints and end_rbreak_breakpoints This replaces start_rbreak_breakpoints and end_rbreak_breakpoints with a new scoped class. This allows the removal of a cleanup. This also fixes an earlier memory leak regression, by changing "string" to be a std::string. gdb/ChangeLog 2017-11-04 Tom Tromey * breakpoint.c (scoped_rbreak_breakpoints::scoped_rbreak_breakpoints): Rename from start_rbreak_breakpoints. (scoped_rbreak_breakpoints): Rename from end_rbreak_breakpoints. * breakpoint.h (class scoped_rbreak_breakpoints): New. (start_rbreak_breakpoints, end_rbreak_breakpoints): Remove. * symtab.c (do_end_rbreak_breakpoints): Remove. (rbreak_command): Use scoped_rbreak_breakpoints, std::string. commit 167b0be1b5ef36a5605fcdfba0c84db2ed475e1e Author: Tom Tromey Date: Wed Nov 1 08:32:13 2017 -0600 Remove directive-searched cleanups This removes a few cleanups related to the "searched" field in struct using_direct, replacing these with scoped_restore. gdb/ChangeLog 2017-11-04 Tom Tromey * cp-namespace.c (reset_directive_searched): Remove. (cp_lookup_symbol_via_imports): Use scoped_restore. * cp-support.c (reset_directive_searched): Remove. (make_symbol_overload_list_using): Use scoped_restore. * d-namespace.c (d_lookup_symbol_imports): Use scoped_restore. (reset_directive_searched): Remove. commit 5eae7aeaf754549d3645a0c590c5ef9f0134a32d Author: Tom Tromey Date: Wed Oct 25 15:52:23 2017 -0600 Use unique_xmalloc_ptr in find_separate_debug_file_by_debuglink This changes find_separate_debug_file_by_debuglink to use unique_xmalloc_ptr, removing some cleanups. gdb/ChangeLog 2017-11-04 Tom Tromey * symfile.c (find_separate_debug_file_by_debuglink): Use unique_xmalloc_ptr. commit c6bcad5ffc9b4021253487e46a8754e5804135cf Author: Tom Tromey Date: Wed Oct 25 15:46:31 2017 -0600 Use std::vector in compile-loc2c.c This changes compile-loc2c.c to use std::vector, removing some cleanups. gdb/ChangeLog 2017-11-04 Tom Tromey * compile/compile-loc2c.c (compute_stack_depth_worker): Change type of "info". (compute_stack_depth): Likewise. (do_compile_dwarf_expr_to_c): Use std::vector. commit 20dcd8cae7d87910f6c3936bad72e78b647a8de6 Author: Tom Tromey Date: Wed Oct 25 15:44:56 2017 -0600 Remove cleanups from link_callbacks_einfo This removes a cleanup from link_callbacks_einfo by using std::string. gdb/ChangeLog 2017-11-04 Tom Tromey * compile/compile-object-load.c (link_callbacks_einfo): Use std::string. commit 33c7c59df060e9952fc2f608c3a6ff0a23ecd40d Author: Tom Tromey Date: Fri Oct 20 09:30:48 2017 -0600 Replace really_free_pendings with a scoped_ class This introduces scoped_free_pendings, and changes users of really_free_pendings to use it instead, removing some clenaups. I tried to examine the affected code to ensure there aren't dangling cleanups in the vicinity. gdb/ChangeLog 2017-11-04 Tom Tromey * dwarf2read.c (process_full_comp_unit, process_full_type_unit): Use scoped_free_pendings. * dbxread.c (dbx_symfile_read, dbx_psymtab_to_symtab_1): Use scoped_free_pendings. * xcoffread.c (xcoff_psymtab_to_symtab_1): Use scoped_free_pendings. (xcoff_initial_scan): Likewise. * buildsym.c (reset_symtab_globals): Update comment. (scoped_free_pendings): Rename from really_free_pendings. (prepare_for_building): Update comment. (buildsym_init): Likewise. * buildsym.h (class scoped_free_pendings): New class. (really_free_pendings): Don't declare. commit ebe6dbc2645081e3a166865f057e7cc9643e7e12 Author: GDB Administrator Date: Sat Nov 4 00:00:27 2017 +0000 Automatic date update in version.in commit 79b0c981b8f0c912208ec305d48e775bcb6d2624 Author: H.J. Lu Date: Fri Nov 3 11:14:56 2017 -0700 x86: Remove func_pointer_refcount Since check_reloc is running after gc_sections, there is no need for reference count. If a function pointer relocation can be resolved at run-time, there is no need for PLT and it doesn't count as non-GOT/PLT relocation. func_pointer_refcount can be removed. * elf32-i386.c (elf_i386_check_relocs): Set plt.refcount to 1. Don't use func_pointer_refcount. Don't set plt.refcount nor non_got_ref for function pointer reference. * elf64-x86-64.c (elf_x86_64_check_relocs): Likewise. * elfxx-x86.c (elf_x86_allocate_dynrelocs): Don't use func_pointer_refcount. (_bfd_x86_elf_copy_indirect_symbol): Don't copy func_pointer_refcount. (_bfd_x86_elf_hide_symbol): Don't use func_pointer_refcount. * elfxx-x86.h (GENERATE_DYNAMIC_RELOCATION_P): Likewise. (elf_x86_link_hash_entry): Remove func_pointer_refcount. commit 67fa57cfa536cefb5ae7cc4635db66d03fdbd8bb Author: Ulrich Weigand Date: Fri Nov 3 16:07:23 2017 +0100 Fix regression on ARM after Target FP patches Commit edd079d9f6ca2f9ad21322b742269aec5de61190 exposed a pre-existing bug in convert_doublest_to_floatformat. In the specific case of converting a zero value to a floatformat using a "special" byteorder (i.e. neither floatformat_little nor floatformat_big), the output buffer was actually left uninitialized. gdb/ChangeLog: 2017-11-03 Ulrich Weigand * doublest.c (convert_doublest_to_floatformat): Fix uninitialized output when converting a zero value to a special byteorder format. commit fdddd2900f39584e7d6cee27127593fba2cb0cf2 Author: claziss Date: Fri Nov 3 15:36:42 2017 +0100 [ARC] Force the disassam to use the hexadecimal number for printing Force printing of the short/signed values using hexadecimal representation via disassembler option. opcode/ 2017-11-03 Claudiu Zissulescu * arc-dis.c (print_hex): New variable. (parse_option): Check for hex option. (print_insn_arc): Use hexadecimal representation for short immediate values when requested. (print_arc_disassembler_options): Add hex option to the list. binutils/ 2017-11-03 Claudiu Zissulescu * doc/binutils.texi (ARC): Update disassembler options. * testsuite/binutils-all/arc/hexprint.s: New file. * testsuite/binutils-all/arc/objdump.exp: Test hex printing feature. commit 7605d944531519ddf9026bf059475a4347c83aa4 Author: Siddhesh Poyarekar Date: Fri Nov 3 19:33:03 2017 +0530 Add option for Qualcomm Saphira part This adds an option for the Qualcomm saphira core, the corresponding gcc patch is here: https://gcc.gnu.org/ml/gcc-patches/2017-10/msg02055.html This was tested with an aarch64 build and make check and also by building and running SPEC2006. gas/ * config/tc-aarch64.c (aarch64_cpus): Add saphira. * doc/c-aarch64.texi: Likewise. commit bf59c5d5f4f5b8b4da1f5f605cfa546f8029b43d Author: Nick Clifton Date: Fri Nov 3 13:57:15 2017 +0000 Fix integer overflow problems when reading an ELF binary with corrupt augmentation data. PR 22386 * dwarf.c (read_cie): Use bfd_size_type for augmentation_data_len. (display_augmentation_data): New function. (display_debug_frames): Use it. Check for integer overflow when testing augmentation_data_len. commit 3334eba7f4aeaa06926d5f1fb51446c5cea43e42 Author: claziss Date: Fri Nov 3 14:38:05 2017 +0100 [ARC] Sync opcode data base. New EM and HS variants are developed, sync the data base to match them. opcodes/ 2017-11-03 Claudiu Zissulescu * arc-tbl.h (abss, abssh, adc, adcs, adds, aslacc, asls, aslsacc) (asrs, asrsr, cbflyhf0r, cbflyhf1r, cmacchfr, cmacchnfr, cmachfr) (cmachnfr, cmpychfr, cmpychnfr, cmpyhfmr, cmpyhfr, cmpyhnfr, divf) (dmachbl, dmachbm, dmachf, dmachfr, dmacwhf, dmpyhbl, dmpyhbm) (dmpyhf, dmpyhfr, dmpyhwf, dmpywhf, dsync, flagacc, getacc, macdf) (macf, macfr, macwhfl, macwhflr, macwhfm, macwhfmr, macwhkl) (macwhkul, macwhl, macwhul, mpydf, mpyf, mpyfr, mpywhfl, mpywhflr) (mpywhfm, mpywhfmr, mpywhkl, mpywhkul, mpywhl, mpywhul, msubdf) (msubf, msubfr, msubwhfl, msubwhflr, msubwhfm, msubwhfmr, mul64) (negs, negsh, normacc, qmachf, qmpyh, qmpyhf, rndh, satf, sath) (sbcs, setacc, sflag, sqrt, sqrtf, subs, swi_s, vabs2h, vabss2h) (vadd4b, vadds2, vadds2h, vadds4h, vaddsubs, vaddsubs2h) (vaddsubs4h, valgn2h, vasl2h, vasls2h, vasr2h, vasrs2h, vasrsr2h) (vext2bhl, vext2bhlf, vext2bhm, vext2bhmf, vlsr2h, vmac2hf) (vmac2hfr, vmac2hnfr, vmax2h, vmin2h, vmpy2h, vmpy2hf, vmpy2hfr) (vmpy2hwf, vmsub2hf, vmsub2hfr, vmsub2hnfr, vneg2h, vnegs2h) (vnorm2h, vpack2hbl, vpack2hblf, vpack2hbm, vpack2hbmf, vpack2hl) (vpack2hm, vperm, vrep2hl, vrep2hm, vsext2bhl, vsext2bhm, vsub4b) (vsubadds, vsubadds2h, vsubadds4h, vsubs2, vsubs2h, vsubs4h): Changed opcodes. (prealloc, prefetch*): Place them before ld instruction. * arc-opc.c (skip_this_opcode): Add ARITH class. commit 50ab6ace3803ca317f265dae6064494e3b7fa8cb Author: Yao Qi Date: Fri Nov 3 12:53:53 2017 +0000 Skip gdb.mi/list-thread-groups-available.exp if no xml support I see the following test fail in gdb (configured --with-expat=no), -list-thread-groups --available^M &"warning: Can not parse XML OS data; XML support was disabled at compile time\n"^M ^error,msg="Can not fetch data now."^M (gdb) ^M FAIL: gdb.mi/list-thread-groups-available.exp: list available thread groups (unexpected output) This patch skips it if XML parsing in GDB is disabled, like what you did in gdb.mi/mi-info-os.exp. gdb/testsuite: 2017-11-03 Yao Qi * gdb.mi/list-thread-groups-available.exp: Skip it if XML parsing in GDB is disabled. commit 6cee897971d4d7cd37d2a686bb6d2aa3e759c8ca Author: Nick Clifton Date: Fri Nov 3 11:55:21 2017 +0000 Fix excessive memory allocation attempts and possible integer overfloaws when attempting to read a COFF binary with a corrupt symbol count. PR 22385 * coffgen.c (_bfd_coff_get_external_symbols): Check for an overlarge raw syment count. (coff_get_normalized_symtab): Likewise. commit 8e68731c8a4aecb3481803e91b9bcd2df182c135 Author: Yao Qi Date: Fri Nov 3 10:36:42 2017 +0000 Skip gdb.python/py-thrhandle.exp if python is not enabled. gdb/testsuite: 2017-11-03 Yao Qi * gdb.python/py-thrhandle.exp: Skip it if python is not enabled. commit 3d47a7fef640b0a5a90aa7494c41982cf84a4092 Author: GDB Administrator Date: Fri Nov 3 00:00:26 2017 +0000 Automatic date update in version.in commit c05e0c5af35ebbb1ca39bb1efffae2adecdfa253 Author: Siddhesh Poyarekar Date: Thu Nov 2 22:49:32 2017 +0530 aarch64: Remove AARCH64_FEATURE_F16 from AARCH64_ARCH_V8_2 The FP16 feature is optional in ARMv8.2, so it is wrong to add it to the default AARCH64_ARCH_V8_2 feature flags. This patch makes the behaviour consistent with that of gcc, which also does not assume FP16 for ARMv8.2. include/ * opcode/aarch64.h (AARCH64_ARCH_V8_2): Drop AARCH64_FEATURE_F16. commit 6ab2c4ed51f9c4243691755e1b1d2149c6a426f4 Author: Mingi Cho Date: Thu Nov 2 17:01:08 2017 +0000 Work around integer overflows when readelf is checking for corrupt ELF notes when run on a 32-bit host. PR 22384 * readelf.c (print_gnu_property_note): Improve overflow checks so that they will work on a 32-bit host. commit f26ae15b471aaddee81d9d6c03af1cb0f2081735 Author: Yao Qi Date: Thu Nov 2 15:15:42 2017 +0000 Construct readonly regcache without address space The address space is useless to readonly regcache, so this patch removes the parameter to construct readonly regcache. address_space was added in regcache by 6c95b8d, but for read-write regcache. regcache::aspace is used for various breakpoint/watchpoint checking, and these regcache are not read-only regcache. gdb: 2017-11-02 Yao Qi * frame.c (do_frame_register_read): Remove aspace. * jit.c (jit_frame_sniffer): Likwise. * ppc-linux-tdep.c (ppu2spu_sniffer): Likewise. * regcache.c (regcache::regcache): Pass nullptr. (regcache_print): Caller updated. * regcache.h (regcache::regcache): Remove one constructor parameter aspace. commit 6c6e9412e930c96f48b8ee78a389437328f5283c Author: Yao Qi Date: Thu Nov 2 15:15:42 2017 +0000 const-fy regcache::m_readonly_p gdb: 2017-11-02 Yao Qi * regcache.h (regcache) : Change it to const bool. commit 8b86c9592117b3ba52921af11868dc0b81ce4858 Author: Yao Qi Date: Thu Nov 2 15:15:42 2017 +0000 const-fy regcache::m_aspace regcache::m_aspace is a const, never changed during the lifetime of regcache object. The address_space object is a const object too. gdb: 2017-11-02 Yao Qi * breakpoint.c (insert_single_step_breakpoints): Update. * frame.c (struct frame_info) : Add const. (frame_save_as_regcache): Add const. (get_frame_address_space): Return const address_space *. * frame.h (get_frame_address_space): Update declaration. * infrun.c (struct step_over_info) : Add const. (set_step_over_info): Make aspace const. (displaced_step_prepare_throw): Change variable const. (resume): Likewise. (proceed): Likewise. (adjust_pc_after_break): Likewise. (save_waitstatus): Likewise. (handle_signal_stop): Likewise. (keep_going_pass_signal): Likewise. * jit.c (jit_frame_sniffer): Add const. * mips-tdep.c (mips_single_step_through_delay): Likewise. * ppc-linux-tdep.c (ppu2spu_sniffer): Likewise. * record-full.c (record_full_wait_1): Likewise. * regcache.c (regcache::regcache): Change parameter to const. * regcache.h (regcache::regcache): Likewise. (regcache::aspace): Return const address_space *. (regcache) : Add const. commit a01bda5221f75031ea2b6d05860e46c7b9b58b55 Author: Yao Qi Date: Thu Nov 2 15:15:41 2017 +0000 s/get_regcache_aspace (regcache)/regcache->aspace ()/g and remove get_regcache_aspace. gdb: 2017-11-02 Yao Qi * darwin-nat.c (cancel_breakpoint): Use regcache->aspace (). * frame.c (create_sentinel_frame): Likewise. * infrun.c (displaced_step_prepare_throw): Likewise. (resume): Likewise. (thread_still_needs_step_over_bp): Likewise. (proceed): Likewise. (do_target_wait): Likewise. (adjust_pc_after_break): Likewise. (handle_syscall_event): Likewise. (save_waitstatus): Likewise. (handle_inferior_event_1): Likewise. (handle_signal_stop): Likewise. (keep_going_pass_signal): Likewise. * linux-nat.c (status_callback): Likewise. (save_stop_reason): Likewise. (resume_stopped_resumed_lwps): Likewise. * record-full.c (record_full_exec_insn): Likewise. (record_full_wait_1): Likewise. * regcache.c (get_regcache_aspace): Remove. * regcache.h (get_regcache_aspace): Remove. commit d999647bc427ce2e083c4449b683705449d0bb58 Author: Yao Qi Date: Thu Nov 2 15:15:41 2017 +0000 Remove regcache_descr::nr_raw_registers struct regcache_descr has fields nr_raw_registers and gdbarch, and nr_raw_registers can be got via gdbarch_num_regs (gdbarch), so it looks nr_raw_registers is redundant. This patch removes it and adds a protected method num_raw_registers. gdb: 2017-11-02 Yao Qi * regcache.c (struct regcache_descr) : Remove. (init_regcache_descr): Use gdbarch_num_regs. (regcache::regcache): Likewise. (regcache::get_register_status): Likewise. (regcache::assert_raw_regnum): Likewise. (regcache::cooked_read): Likewise. (regcache::cooked_read_value): Likewise. (regcache::cooked_write): Likewise. (regcache::dump): Likewise. (regcache::num_raw_registers): New method. * regcache.h (class regcache) : New. commit 4e888c281cd19f019248bd165d7055af88641c80 Author: Yao Qi Date: Thu Nov 2 15:15:41 2017 +0000 New method regcache::assert_regnum class regcache has some methods checking the range of register number, this patch is to move it in a new method assert_regnum. gdb: 2017-11-02 Yao Qi * regcache.c (regcache::assert_regnum): New method. (regcache::invalidate): Call assert_regnum. (regcache::raw_update): Likewise. (regcache::raw_write): Likewise. (regcache::raw_read_part): Likewise. (regcache::raw_write_part): Likewise. (regcache::raw_supply): Likewise. (regcache::raw_supply_integer): Likewise. (regcache::raw_supply_zeroed): Likewise. (regcache::raw_collect): Likewise. (regcache::raw_collect_integer): Likewise. * regcache.h (regcache::assert_regnum): Declare. commit 2e1b49b32ab9aec1aca94f424cbe275e5f6f9ab4 Author: Yao Qi Date: Thu Nov 2 15:15:41 2017 +0000 Remove code wrapped by "#if 0" These code wrapped by "#if 0" was added by af030b9a, which added the new command to dump registers in 2002. The email didn't mention this either https://sourceware.org/ml/gdb-patches/2002-08/msg00227.html It was there for 15 years, and nobody needs it, so we can remove it. gdb: 2017-11-02 Yao Qi * regcache.c (regcache::dump): Remove code. commit 6c5218dfdb7b38cc1617be7753cc1ec6d0612382 Author: Yao Qi Date: Thu Nov 2 15:05:12 2017 +0000 Remove regcache_descr fields sizeof_raw_register_status and sizeof_cooked_register_status struct regcache_descr has two fields sizeof_raw_register_status and sizeof_cooked_register_status, but they equal to nr_cooked_registers and nr_raw_registers respectively, so this patch removes them. gdb: 2017-11-02 Yao Qi * regcache.c (struct regcache_descr) : Remove. : Remove. (init_regcache_descr): Update. (regcache::regcache): Use nr_cooked_registers and nr_raw_registers. (regcache::save): Likewise. (regcache::dump): Likewise. commit 852735806aa4343ba4bbe89656041800cf482918 Author: Thomas Preud'homme Date: Thu Nov 2 14:16:22 2017 +0000 [ARM] Help wince objdump on coproc tests Object files other than ELF do not have mapping symbols to indicate the type of data for objdump to work reliably. This is why the following tests FAIL on arm-wince-pe targets: ARMv6T2 Thumb CoProcessor Instructions (1) ARMv6T2 Thumb CoProcessor Instructions (2) This patch adds the force-thumb disassembler option to objdump for this test to PASS on these targets as well. 2017-11-02 Thomas Preud'homme gas/ * testsuite/gas/arm/copro-thumb_v6t2plus-thumb_v6t2-1.d: Add --disassembler-options=force-thumb to objdump options. * testsuite/gas/arm/copro-thumb_v6t2plus-thumb_v6t2-2.d: Likewise. commit dcc31d286ad05aa93577181f9a8292009622363e Author: James Bowman Date: Wed Nov 1 18:34:25 2017 -0700 FT32: support for FT32B processor - part 2/2 FT32B is a new FT32 family member. This patch adds support for the compressed instructions to gdb and sim. gdb/ChangeLog: * ft32-tdep.c (ft32_fetch_instruction): New function. (ft32_analyze_prologue): Use ft32_fetch_instruction(). sim/ChangeLog: * ft32/interp.c (step_once): Add ft32 shortcode decoder. commit 89f3c4b6b9b565720f88636d966f22923c03e9cb Author: GDB Administrator Date: Thu Nov 2 00:00:15 2017 +0000 Automatic date update in version.in commit 81b42bcab16f4462eb4c91db2cf09cd76e17402e Author: James Bowman Date: Wed Nov 1 15:33:24 2017 +0000 FT32B is a new FT32 family member. It has a code compression scheme, which requires the use of linker relaxations. The change is quite large, so submission is in several parts. Part 2 adds a relaxation pass, which actually implements the code compression scheme. bfd * archures.c: Add bfd_mach_ft32b. * cpu-ft32.c: Add arch_info_struct. * elf32-ft32.c: Add R_FT32_RELAX, SC0, SC1, DIFF32. (ft32_elf_relocate_section): Add clauses for R_FT32_SC0, SC1, DIFF32. (ft32_reloc_shortable, elf32_ft32_is_diff_reloc, elf32_ft32_adjust_diff_reloc_value, elf32_ft32_adjust_reloc_if_spans_insn, elf32_ft32_relax_delete_bytes, elf32_ft32_relax_is_branch_target, ft32_elf_relax_section): New function. * reloc.c: Add BFD_RELOC_FT32_RELAX, SC0, SC1, DIFF32. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. gas * config/tc-ft32.c (md_assemble): add relaxation reloc BFD_RELOC_FT32_RELAX. (md_longopts): Add "norelax" and "no-relax". (md_apply_fix): Add reloc BFD_RELOC_FT32_DIFF32. (relaxable_section, ft32_validate_fix_sub, ft32_force_relocation, ft32_allow_local_subtract): New function. * config/tc-ft32.h: remove unused MD_PCREL_FROM_SECTION. * testsuite/gas/ft32/insnsc.s: New test exercising all FT32B shortcodes. include * elf/ft32.h: Add R_FT32_RELAX, SC0, SC1, DIFF32. commit a67d66eb97e7613a38ffe6622d837303b3ecd31d Author: Nick Clifton Date: Wed Nov 1 15:21:46 2017 +0000 Prevent illegal memory accesses when attempting to read excessively large COFF line number tables. PR 22376 * coffcode.h (coff_slurp_line_table): Check for an excessively large line number count. commit e0115a844607b280449986e661f551dff49a9031 Author: Nick Clifton Date: Wed Nov 1 12:37:33 2017 +0000 Update check for invalid values in pe_bfd_read_buildid function. PR 22373 * peicode.h (pe_bfd_read_buildid): Revise check for invalid size and offset in light of further possible bogus values. commit ee357486aa87b17782111295c5e7bd4ac9e6970f Author: Nick Clifton Date: Wed Nov 1 11:35:42 2017 +0000 Fix an invalid free called when attempting to link a COFF object against an ELF archive with --no-keep-memory enabled. PR 22369 * coffgen.c (_bfd_coff_free_symbols): Fail if called on a non-COFF file. * cofflink.c (coff_link_check_archive_element): Skip non-COFF members of an archive. commit 4070243b5c1f66a36dd43a7b722e991ac9fc40e1 Author: Thomas Preud'homme Date: Wed Nov 1 09:49:13 2017 +0000 [ARM] Fix Coprocessor instructions availability A few coprocessor instructions introduced in ARMv2 are currently accepted by GAS when targeting ARMv1 due to a typo in the code. This patch fixes the issue and introduce a more fine grained testing for coprocessor instructions availability. Coprocessor instructions are grouped as follows: * ARM coprocessor instructions introduced in ARMv2 Includes: ldc, stc, mcr, mrc, cdp, ldcl, stcl Guarded by: ARM_EXT_V2 Tests: copro-arm_v2plus-arm_v*.d * ARM coprocessor instructions introduced in ARMv5 Includes: ldc2, ldc2l, stc2, stc2l, cdp2, mcr2, mrc2 Guarded by: ARM_EXT_V5 Tests: copro-arm_v5plus-arm_v*.d * ARM coprocessor instructions introduced in ARMv5TE Includes: mcrr, mrrc Guarded by: ARM_EXT_V5E Tests: copro-arm_v5teplus-arm_v*.d * ARM coprocessor instructions introduced in ARMv6 Includes: mcrr2, mrrc2 Guarded by: ARM_EXT_V6 Tests: copro-arm_v6plus-arm_v*.d * Thumb coprocessor instructions introduced in ARMv6T2 Includes: ldc, ldcl, stc, stcl, mcr, mrc, mcrr, mrrc, cdp, ldc2, ldc2l, stc2, stc2l, cdp2, mcr2, mrc2, mcrr2, mrrc2 Guarded by: ARM_EXT_V6T2 Tests: copro-thumb_v6t2plus-thumb_v*.d For each of these groups, at least 2 tests are performed: * instructions are not available in earlier architecture * instructions are available in architecture where they were introduced More tests need to be performed when instructions in a group span several assembly files. Note that an instruction in the original coprocessor testcase is changed to unified syntax to allow the testcase to be assembled for ARM and Thumb state. Correct processing of legacy syntax is covered in other testcases. 2017-11-01 Thomas Preud'homme gas/ * config/tc-arm.c (arm_ext_v2): Define to ARM_EXT_V2 feature bit. * testsuite/gas/arm/copro.s: Split into ... * testsuite/gas/arm/copro-arm_v2plus-thumb_v6t2plus.s: This while changing it to unified syntax and ... * testsuite/gas/arm/copro-arm_v5plus-thumb_v6t2plus.s: this and ... * testsuite/gas/arm/copro-arm_v5teplus-thumb_v6t2plus.s: This and ... * testsuite/gas/arm/copro-arm_v6plus-thumb_v6t2plus.s: This. * testsuite/gas/arm/copro.d: Split into ... * testsuite/gas/arm/copro-arm_v2plus-arm_v2.d: This but target ARMv2 and ... * testsuite/gas/arm/copro-arm_v5plus-arm_v5.d: this but target ARMv5 and ... * testsuite/gas/arm/copro-arm_v5teplus-arm_v5te.d: This but target ARMv5TE and ... * testsuite/gas/arm/copro-arm_v6plus-arm_v6.d: This but target ARMv6. * testsuite/gas/arm/copro-arm_v2plus-arm_v1.d: New testcase. * testsuite/gas/arm/copro-thumb_v6t2plus-thumb_v4t-1.d: New testcase. * testsuite/gas/arm/copro-arm_v2plus-thumb_v6t2plus-unavail.l: Expected errors for the above two testcases. * testsuite/gas/arm/copro-thumb_v6t2plus-thumb_v6t2-1.d: New testcase. * testsuite/gas/arm/copro-arm_v5plus-arm_v4.d: New testcase. * testsuite/gas/arm/copro-thumb_v6t2plus-thumb_v4t-2.d: New testcase. * testsuite/gas/arm/copro-arm_v5plus-thumb_v6t2plus-unavail.l: Expected errors for the above two testcases. * testsuite/gas/arm/copro-thumb_v6t2plus-thumb_v6t2-2.d: New testcase. * testsuite/gas/arm/copro-arm_v5teplus-arm_v5.d: New testcase. * testsuite/gas/arm/copro-thumb_v6t2plus-thumb_v4t-3.d: New testcase. * testsuite/gas/arm/copro-arm_v5teplus-thumb_v6t2plus-unavail.l: Expected errors for the above two testcases. * testsuite/gas/arm/copro-thumb_v6t2plus-thumb_v6t2-3.d: New testcase. * testsuite/gas/arm/copro-arm_v6plus-arm_v5te.d: New testcase. * testsuite/gas/arm/copro-thumb_v6t2plus-thumb_v4t-4.d: New testcase. * testsuite/gas/arm/copro-arm_v6plus-thumb_v6t2plus-unavail.l: Expected errors for the above two testcases. * testsuite/gas/arm/copro-thumb_v6t2plus-thumb_v6t2-4.d: New testcase. commit 3988aed54acce3c682a877b51b0e09cce1079e81 Author: Alan Modra Date: Tue Oct 31 22:13:21 2017 +1030 PR22374, PowerPC unnecessary PLT entries We don't need a PLT entry when function pointer initialization in a read/write section is the only reference to a given function symbol. This patch prevents the unnecessary PLT entry, and ensures no dynamic relocs are emitted when UNDEFWEAK_NO_DYNAMIC_RELOC says so. bfd/ PR 22374 * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Don't create a plt entry when just a dynamic reloc can serve. Ensure no dynamic relocations when UNDEFWEAK_NO_DYNAMIC_RELOC by setting non_got_ref. Expand and move the non_got_ref comment. * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise. ld/ * testsuite/ld-powerpc/ambiguousv2.d: Remove FIXME. commit e48f0c8f1b9fdb195394dc7afea02ce55e4ba5e4 Author: Alan Modra Date: Tue Oct 31 11:13:30 2017 +1030 PR22374 testcase, function pointer references in .data Function pointer references in .data ought to use a dynamic reloc. There shouldn't be any need for a PLT entry and definitely no copy reloc. This test fails on quite a few targets, but isn't something that anyone should worry about too much. It's really just a missed optimization. PR 22374 * testsuite/ld-elf/pr22374a.s, * testsuite/ld-elf/pr22374b.s, * testsuite/ld-elf/pr22374-1.r, * testsuite/ld-elf/pr22374-2.r: New test. * testsuite/ld-elf/elf.exp: Run it. commit 46b06a98d112ee433a8f81c700a8852c92ca8132 Author: Alan Modra Date: Tue Oct 31 18:19:21 2017 +1030 Tidy elf.exp * testsuite/ld-elf/elf.exp: Merge some conditionals, a better name than "shared library for next test", and use xfail arg of run_ld_link_tests in a few places. commit 3a87ae656c283e4f46ddf7d92c06ecb8992c2bf6 Author: Simon Marchi Date: Tue Oct 31 21:30:24 2017 -0400 Use console uiout when executing breakpoint commands As reported here https://sourceware.org/ml/gdb/2017-10/msg00020.html the output of certain commands, like backtrace, doesn't appear anywhere when it is run as a breakpoint command and when using MI. The reason is that the current_uiout is set to the mi_ui_out while these commands run, whereas we want the output as CLI output. Some commands like "print" work, because they use printf_filtered (gdb_stdout, ...) directly, bypassing the current ui_out. The fix I did is to force setting the cli_uiout as the current_uiout when calling execute_control_command. I am not sure if this is the right way to fix the problem, comments about the approach would be appreciated. I enhanced gdb.mi/mi-break.exp to test the backtrace command. Regtested on the buildbot. gdb/ChangeLog: * cli/cli-script.c (execute_control_command): Rename to ... (execute_control_command_1): ... this. (execute_control_command): New function. gdb/testsuite/ChangeLog: * gdb.mi/mi-break.exp (test_breakpoint_commands): Test backtrace as a breakpoint command. commit 4d01dee4804d39c1671bc220caf32a327e7e4b10 Author: GDB Administrator Date: Wed Nov 1 00:00:19 2017 +0000 Automatic date update in version.in commit 09b847f3a85ca29ec20ada375fe67843755b6413 Author: Simon Marchi Date: Tue Oct 31 14:29:25 2017 -0400 tracepoint: Remove unnecessary const_cast We are passing a const char * to a const char * parameter, the const_cast is not necessary. gdb/ChangeLog: * tracepoint.c (tfind_command): Remove const_cast. commit 0bb6961f18b8e832d88b490d421ca56cea16c45b Author: Nick Clifton Date: Tue Oct 31 14:29:40 2017 +0000 Fix illegal memory access triggered when parsing a PE binary with a corrupt data dictionary. PR 22373 * peicode.h (pe_bfd_read_buildid): Check for invalid size and data offset values. commit 45ac8f4f107f50d77a8514ee8a244b82c1a8ea0c Author: Nick Clifton Date: Tue Oct 31 13:48:03 2017 +0000 Remind users to use the --use-dynamic command line option to dump dynamic relocations. * readelf.c (process_relocs): Tell users if no static relocs were found, but if they had added --use-dynamic to the command line then relocs would have been displayed. commit f871c4853a9725682011c2314ea4308f3c34bd8d Author: Mike Gulick Date: Mon Oct 30 20:11:52 2017 -0400 gdb/Makefile.in: fix 'make tags' failure 'make tags' fails with the following error: make[2]: Entering directory '/local-ssd/mgulick/gdb/git/binutils-gdb/gdb' make[2]: *** No rule to make target 'gdb.h', needed by 'TAGS'. Stop. make[2]: Leaving directory '/local-ssd/mgulick/gdb/git/binutils-gdb/gdb' The file gdb/gdb.h was removed in commit 65630365f7d073430e62b4fe65f34dcdc0a4b05e. gdb/ChangeLog: 2017-10-30 Mike Gulick * Makefile.in (HFILES_NO_SRCDIR): Remove reference to gdb.h. commit 916296ccea146c9b9517e00494bde307f2af7efa Author: GDB Administrator Date: Tue Oct 31 00:00:40 2017 +0000 Automatic date update in version.in commit b020ff8074af22639e3f3c0f700f45d067521249 Author: Simon Marchi Date: Mon Oct 30 14:27:30 2017 -0400 Introduce in_inclusive_range, fix -Wtautological-compare warnings When compiling with clang or gcc 8, we see warnings like this: /home/emaisin/src/binutils-gdb/gdb/arm-tdep.c:10013:13: error: comparison of 0 <= unsigned expression is always true [-Werror,-Wtautological-compare] if (0 <= insn_op1 && 3 >= insn_op1) ~ ^ ~~~~~~~~ /home/emaisin/src/binutils-gdb/gdb/arm-tdep.c:11722:20: error: comparison of unsigned expression >= 0 is always true [-Werror,-Wtautological-compare] else if (opB >= 0 && opB <= 2) ~~~ ^ ~ This is because an unsigned integer (opB in this case) will always be >= 0. It is still useful to keep both bounds of the range in the expression, even if one is at the edge of the data type range. This patch introduces a utility function in_inclusive_range that gets rid of the warning while conveying that we are checking for a range. Tested by rebuilding. gdb/ChangeLog: * common/common-utils.h (in_inclusive_range): New function. * arm-tdep.c (arm_record_extension_space): Use in_inclusive_range. (thumb_record_ld_st_reg_offset): Use in_inclusive_range. * cris-tdep.c (cris_spec_reg_applicable): Use in_inclusive_range. commit 1b81856f5b00e7ba860e4de2f3a426f342327165 Author: Pedro Alves Date: Mon Oct 30 11:41:34 2017 +0000 remote.c, QCatchSyscalls: Build std::string instead of unique_xmalloc_ptr Simplify the code a little bit using std::string + string_appendf. gdb/ChangeLog: 2017-10-30 Pedro Alves Simon Marchi * remote.c (remote_set_syscall_catchpoint): Build a std::string instead of a gdb::unique_xmalloc_ptr, using string_appendf. commit 31b833b3eab69d91df67edc3e9a21792abc3f93e Author: Pedro Alves Date: Mon Oct 30 11:41:34 2017 +0000 Introduce string_appendf/string_vappendf string_appendf is like string_printf, but instead of allocating a new string, it appends to an existing string. This allows reusing a std::string's memory buffer across several calls, for example. gdb/ChangeLog: 2017-10-30 Pedro Alves * common/common-utils.c (string_appendf, string_vappendf): New functions. * common/common-utils.h (string_appendf, string_vappendf): New declarations. * unittests/common-utils-selftests.c (string_appendf_func) (test_appendf_func, string_vappendf_wrapper, string_appendf_tests) (string_vappendf_tests): New functions. (_initialize_common_utils_selftests): Register "string_appendf" and "string_vappendf tests". commit 4a25033455f1e4e0325fdd249e30a79efc856689 Author: Pedro Alves Date: Mon Oct 30 11:41:34 2017 +0000 Merge/shared string_printf and string_vprintf unit tests Merge the string_printf and string_vprintf tests, running them all against both functions. gdb/ChangeLog: 2017-10-30 Pedro Alves * unittests/common-utils-selftests.c (format_func): New typedef. (string_printf_tests, string_vprintf_tests): Tests factored out and merged to ... (test_format_func): ... this new function. (string_printf_tests, string_vprintf_tests): Reimplement on top of test_format_func. commit 16c5c17e43b34c6cc5337b40e927bc2d05c38300 Author: Simon Marchi Date: Sun Oct 29 22:37:11 2017 -0400 darwin-nat: Remove gdb.h include gdb.h has been removed in Eliminate catch_exceptions/catch_exceptions_with_msg 65630365f7d073430e62b4fe65f34dcdc0a4b05e Remove the include in darwin-nat.c. Tested by rebuilding. gdb/ChangeLog: * darwin-nat.c: Remove include of gdb.h. commit 7f9cb5d275e71a75e97230241ec7da6718a7a0f5 Author: Alan Modra Date: Mon Oct 30 12:02:42 2017 +1030 frv-elf --gc-sections failures git commit 81742b83e9 exposed an frv-elf bug, with the object id not matching the hash table id. * elf32-frv.c (ELF_TARGET_ID): Don't define for generic elf target. commit 81742b83e9f25895eaaf3a07ac1651a4e9a68251 Author: Alan Modra Date: Mon Oct 30 10:20:29 2017 +1030 relocs_compatible test for gc-sections I noticed when looking at pr22300 that before calling check_relocs we have an elf_object_id test (added for pr11933) as well as the relocs_compatible test. I believe backend gc_mark_hook and gc_sweep_hook ought to be protected similarly from being confused by unexpected relocations (for example, both elf64-ppc.c and elf32-ppc.c use _bfd_elf_relocs_compatible, so I think it would be possible for the ppc64 gc_mark_hook to be presented with a ppc32 relocatable object). * elflink.c (elf_gc_sweep): Test elf_object_id in addition to relocs_compatible. (bfd_elf_gc_sections): Likewise. commit d336fa6d820f50235c271ea327fadbf4ff6e1edd Author: Alan Modra Date: Fri Oct 27 15:04:25 2017 +1030 Fix hppa-linux pr22269-1 fail Adds UNDEFWEAK_NO_DYNAMIC_RELOC in the rest of places needed in this file, reduces dynamic relocations in a number of cases, and removes some bogus code that was attempting to handle dynamic common symbols specially. PR 22269 * elf32-hppa.c (elf32_hppa_check_relocs): Move SEC_ALLOC test to ensure non_got_ref is not set due to debug references. (elf32_hppa_adjust_dynamic_symbol): Tidy plabel handling. Use SYMBOL_CALLS_LOCAL and UNDEFWEAK_NO_DYNAMIC_RELOC when determining need for a plt entry. (allocate_dynrelocs): Similarly for got entries. Tidy code discarding dynamic relocs when pic. Remove bogus code attempting to handle commons. (elf32_hppa_relocate_section): Similarly. Delete resolved_to_zero and simplify. (elf32_hppa_finish_dynamic_symbol): Use UNDEFWEAK_NO_DYNAMIC_RELOC and SYMBOL_REFERENCES_LOCAL in GOT handling. commit 2b2d16760741356447ae10acc93695678db5e5ee Author: GDB Administrator Date: Mon Oct 30 00:00:32 2017 +0000 Automatic date update in version.in commit 7ca51576b94fb59a41050957d5ee822d21711abc Author: Simon Marchi Date: Sun Oct 29 13:01:19 2017 -0400 xtensa-xtregs: Fix formatting issues Fix a few formatting issues in that file. gdb/ChangeLog: * xtensa-xtregs.c: Fix formatting issues. commit c1342859dc02fd57e013ef544037a9ead4f23f60 Author: Simon Marchi Date: Sun Oct 29 01:13:33 2017 -0400 xtensa-xtregs: Constify field Fix: In file included from /home/emaisin/src/binutils-gdb/gdb/xtensa-linux-nat.c:46:0: /home/emaisin/src/binutils-gdb/gdb/xtensa-xtregs.c:37:1: error: ISO C++ forbids converting a string constant to 'char*' [-Werror=write-strings] }; ^ gdb/ChangeLog: * xtensa-xtregs.c (xtensa_regtable_t) : Constify. commit 692af2271947dee1918585c2fad36618a5d47d21 Author: GDB Administrator Date: Sun Oct 29 00:00:25 2017 +0000 Automatic date update in version.in commit 484d8d361de65a8489252d14511b77c142d859a1 Author: Maksim Dzabraev Date: Sun Oct 29 01:14:34 2017 +0700 Make gdb.selected_thread().inferior return a new reference thpy_get_inferior function should return a new reference to the existing inferior object, and therefore should increment its refcount. Fixed bug looks like this. If multiple time call gdb.selected_thread ().inferior, gdb throws exception: (gdb) pi gdb.selected_thread().inferior (gdb) pi gdb.selected_thread().inferior Python Exception 'NoneType' object has no attribute 'inferior': Error while executing Python code. (gdb) info threads Id Target Id Frame * 1 Thread 0x7f54f0474740 (LWP 584) "mc" 0x00007f54ef055c33 in commit d91f0b20e561e326ee91a09a76206257bde8438b Author: Alan Modra Date: Sat Oct 28 21:31:16 2017 +1030 PR22361 readelf buffer overflow on fuzzed archive header PR 22361 * readelf.c (process_archive_index_and_symbols): Ensure ar_size field is zero terminated for strtoul. (setup_archive, get_archive_member_name): Likewise. commit c0e331c794d6bd75d9be9bea6145513074c33f39 Author: Alan Modra Date: Sat Oct 28 14:10:55 2017 +1030 PR22300, Abort in elf32_hppa_relocate_section building polyml polyml produces object files with the wrong OS/ABI for hppa-linux. This, along with the fact that elf32-hppa.c is using the strictest backend relocs_compatible, results in wrong merging of ELF symbols. So, remove the relocs_compatible check in _bfd_elf_merge_symbol. _bfd_elf_merge_symbol is only called nowadays from within blocks protected by is_elf_hash_table, so "we are doing an ELF link" as the removed comment says, is true. Also relax relocs_compatible for hppa and powerpc. relocs_compatible is used for more than just merging symbols, as the name suggests. This allows objects that are in fact reasonably compatible to be linked. PR 22300 * elflink.c (_bfd_elf_merge_symbol): Remove relocs_compatible check. * elf32-hppa.c (elf_backend_relocs_compatible): Define. * elf32-ppc.c (elf_backend_relocs_compatible): Define. * elf64-ppc.c (elf_backend_relocs_compatible): Define. commit bac608e7e11fa83a648c0980883f810ebd1874b1 Author: Simon Marchi Date: Fri Oct 27 23:44:12 2017 -0400 Remove find_inferior usage for thread_search Replace it with for_each_thread. While at it, we can inline the callback code. One little change is that I am using the prev_general_thread variable instead of current_gen_ptid, since they should have the same value. gdb/gdbserver/ChangeLog: * target.c (struct thread_search): Remove. (thread_search_callback): Remove. (prepare_to_access_memory): Use for_each_thread instead of find_inferior. Inline code from thread_search_callback. commit eaddb425928bb4ae21c0c6644b4bedf3d16cb6fa Author: Simon Marchi Date: Fri Oct 27 23:43:11 2017 -0400 Remove usage of find_inferior in resume Change find_inferior with find_thread. Since we can now pass arguments directly instead of through a void pointer, we don't need the visit_actioned_threads_data structure anymore. gdb/gdbserver/ChangeLog: * server.c (struct visit_actioned_threads_data): Remove. (visit_actioned_threads): Change prototype to take arguments directly. (resume): Use find_thread instead of find_inferior. commit 99078d344db25efc376877e0e4c95157f0c36c60 Author: Simon Marchi Date: Fri Oct 27 23:41:49 2017 -0400 Remove usages of find_inferior in handle_status Replace one with find_thread, the other with for_each_thread. gdb/gdbserver/ChangeLog: * server.c (queue_stop_reply_callback): Change prototype, return void. (find_status_pending_thread_callback): Remove. (handle_status): Replace find_inferior with find_thread and for_each_thread. commit b5540b5f2b9cd5fcbac6504359b856d3f43267b5 Author: Simon Marchi Date: Fri Oct 27 23:36:19 2017 -0400 common-utils-selftests.c: Add ATTRIBUTE_PRINTF Fix this, when building with clang: /home/emaisin/src/binutils-gdb/gdb/unittests/common-utils-selftests.c:50:40: error: format string is not a string literal [-Werror,-Wformat-nonliteral] std::string result = string_vprintf (fmt, vp); ^~~ gdb/ChangeLog: * unittests/common-utils-selftests.c (format): Add ATTRIBUTE_PRINTF. commit 5a9dcda14c240eccee5c1de53cf4ae936230ed0c Author: Simon Marchi Date: Fri Oct 27 22:23:33 2017 -0400 C++ify xml-syscall.c This patch C++ifies the structures in xml-syscall.c, by using std::vector instead of VEC, and std::string instead of char*. Using a unique_ptr in syscall_parse_xml allows to remove a cleanup. Something that seems strange with the existing code, if you look at syscalls_info_free_syscalls_desc and syscalls_info_free_syscall_group_desc, they free the structure elements (the strings and vectors), but they don't free the syscall_desc and syscall_group_desc structure themselves. I don't see anything freeing those currently. Any idea why? According to the comment above syscalls_info_free_syscall_group_desc, it kinda looks like it's on purpose. With this patch, those structures are deleted when the vector that contains them gets deleted. The only time I'm aware a syscalls_info structure gets deleted is in the case the data directory changes during runtime, in init_syscalls_info. If tried that use case (including under valgrind): (gdb) catch syscall (gdb) set data-directory another-data-directory (gdb) catch syscall I confirmed that the syscalls_info structure got deleted and recreated, and everything seemed fine. Regtested on the buildbot. gdb/ChangeLog: * xml-syscall.c (struct syscall_desc): Add constructor. : Change type to std::string. (syscall_desc_up): New typedef. (syscall_desc_p): Remove typeder. (DEF_VEC_P(syscall_desc_p)): Remove. (struct syscall_group_desc): Add constructor. : Change type to std::string. : Change type to std::vector. (syscall_group_desc_up): New typedef. (syscall_group_desc_p): Remove typedef. (DEF_VEC_P(syscall_group_desc_p)): Remove. (struct syscalls_info) : Change type to std::vector of unique_ptr. : Likewise. : Change type to std::string. (syscalls_info_up): New typedef. (allocate_syscalls_info): Remove. (syscalls_info_free_syscalls_desc): Remove. (syscalls_info_free_syscall_group_desc): Remove. (free_syscalls_info): Remove. (make_cleanup_free_syscalls_info): Remove. (syscall_group_create_syscall_group_desc): Adjust. (syscall_group_add_syscall): Adjust. (syscall_create_syscall_desc): Adjust. (syscall_parse_xml): Adjust, use unique_ptr instead of cleanup. (init_syscalls_info): Adjust. (syscall_group_get_group_by_name): Adjust. (xml_get_syscall_number): Adjust. (xml_get_syscall_name): Adjust. (xml_list_of_syscalls): Adjust. (xml_list_syscalls_by_group): Adjust. (xml_list_of_groups): Adjust. commit 45461e0dcaf4193b5b4478031f515ffb7911ad85 Author: Simon Marchi Date: Fri Oct 27 22:05:42 2017 -0400 Get rid of VEC(probe_p) Replace the remaining usages of VEC(probe_p) with std::vector. Regtested on the buildbot. gdb/ChangeLog: * probe.h: Don't include gdb_vecs.h. (DEF_VEC_P (probe_p)): Remove. (find_probes_in_objfile): Return an std::vector. * probe.c (find_probes_in_objfile): Likewise. * breakpoint.c (breakpoint_objfile_data) : Change type to std::vector. : Likewise. (free_breakpoint_probes): Don't manually free vectors. (create_longjmp_master_breakpoint): Adjust. (create_exception_master_breakpoint): Adjust. * solib-svr4.c (svr4_create_probe_breakpoints): Change parameter type, adjust. (svr4_create_solib_event_breakpoints): Adjust. commit 43dce4394513d15ba8122c3bf442ec1028d93feb Author: Simon Marchi Date: Fri Oct 27 22:01:21 2017 -0400 Allocate breakpoint_objfile_data with new Allocate with new and free with delete. This allows using an std::vector in the following patch. I renamed free_breakpoint_probes to free_breakpoint_objfile_data, because it now doesn't only free the probes vector, but also the breakpoint_objfile_data structure itself. gdb/ChangeLog: * breakpoint.c (breakpoint_objfile_data): Initialize fields. (get_breakpoint_objfile_data): Allocate breakpoint_objfile_data with new. (free_breakpoint_probes): Rename to ... (free_breakpoint_objfile_data): ... this, and call delete on bp_objfile_data.. commit 6a1b9516d824a4d364040887455ba910f955f065 Author: Simon Marchi Date: Fri Oct 27 21:55:42 2017 -0400 Get rid of VEC(loaded_script_ptr) Direct replacement with std::vector. This allows removing a cleanup as well. Regtested on the buildbot. gdb/ChangeLog: * auto-load.c: Don't include gdb_vecs.h, include algorithm. (loaded_script_ptr): Remove typedef. (DEF_VEC_P (loaded_script_ptr)): Remove. (struct collect_matching_scripts_data): Add constructor. : Change type to (pointer to) std::vector. (collect_matching_scripts_data): Adjust. (sort_scripts_by_name): Make suitable for std::sort. (print_scripts): Don't sort vector, adjust to std::vector. (auto_load_info_scripts): Sort vectors, adjust to std::vector. commit 593e3209f3e4e525030bc8768850f3876fd0b850 Author: Simon Marchi Date: Fri Oct 27 21:47:30 2017 -0400 Get rid of VEC(filename_language) This patch removes VEC(filename_language), replacing its usage with std::vector. filename_language::ext is changed to an std::string at the same time. Regtested on the buildbot. gdb/ChangeLog: * symfile.c (filename_language): Make struct, not typedef. Add constructor. : Change type to std::string. (DEF_VEC_O (filename_language)): Remove. (filename_language_table): Change type to std::vector. (add_filename_language): Adjust. (set_ext_lang_command): Adjust. (info_ext_lang_command): Adjust. (deduce_language_from_filename): Adjust. (class scoped_restore_filename_language_table): Remove. (test_filename_language): Use scoped_restore. (test_set_ext_lang_command): Use scoped_restore, adjust to std::vector change. commit 32fa66eb88d029576cfd8f5698d0579662d2f045 Author: Simon Marchi Date: Fri Oct 27 21:46:49 2017 -0400 Add tests for filename_language The next patch touches the filename_language area, but I noticed there is no test exercising that. This patch adds some selftests for add_filename_language, deduce_language_from_filename and set_ext_lang_command. Because these tests add entries to the global filename_language_table vector, it is not possible to run them successfully multiple times in a same GDB instance. They can potentially interfere with each other for the same reason. I therefore added the scoped_restore_filename_language_table class that is used to make sure tests leave that global vector in the same state they found it (it is replaced in the following patch by a simple scoped_restore). gdb/ChangeLog: * symfile.c: Include selftest.h. (class scoped_restore_filename_language_table): New. (test_filename_language): New test. (test_set_ext_lang_command): New test. (_initialize_symfile): Register tests. commit af5f32f82b0ece140641484d8178ead655f8a0a5 Author: GDB Administrator Date: Sat Oct 28 00:00:30 2017 +0000 Automatic date update in version.in commit 4a27f119f59a44395e0a34b1526cee709e1d3fce Author: Keith Seitz Date: Fri Oct 27 10:57:23 2017 -0700 Use SaL symbol name when reporting breakpoint locations Currently, "info break" can show some (perhaps) unexpected results when setting a breakpoint on an inlined function: (gdb) list 1 #include 2 3 static inline void foo() 4 { 5 printf("Hello world\n"); 6 } 7 8 int main() 9 { 10 foo(); 11 return 0; 12 } 13 (gdb) b foo Breakpoint 1 at 0x400434: file foo.c, line 5. (gdb) i b Num Type Disp Enb Address What 1 breakpoint keep y 0x0000000000400434 in main at foo.c:5 GDB reported that we understood what "foo" was, but we then report that the breakpoint is actually set in main. While that is literally true, we can do a little better. This is accomplished by copying the symbol for which the breakpoint was set into the bp_location. From there, print_breakpoint_location can use this information to print out symbol information (if available) instead of calling find_pc_sect_function. With the patch installed, (gdb) i b Num Type Disp Enb Address What 1 breakpoint keep y 0x0000000000400434 in foo at foo.c:5 gdb/ChangeLog: * breakpoint.c (print_breakpoint_location): Use the symbol saved in the bp_location, falling back to find_pc_sect_function when needed. (add_location_to_breakpoint): Save sal->symbol. * breakpoint.h (struct bp_location) : New field. * symtab.c (find_function_start_sal): Save the symbol into the SaL. * symtab.h (struct symtab_and_line) : New field. gdb/testsuite/ChangeLog: * gdb.opt/inline-break.exp (break_info_1): New procedure. Test "info break" for every inlined function breakpoint. commit bb11dd58391459bd5ba54ec405adab663ac59e89 Author: Yao Qi Date: Fri Oct 27 15:29:24 2017 +0100 [AArch64] Mark LR clobbered by BL in inline asm LR is a caller-save register, so, if inline asm does BL (which touches LR), we should mark LR clobbered. gdb/testsuite: 2017-10-27 Yao Qi * gdb.arch/insn-reloc.c (can_relocate_bl): Mark "x30" clobbered. commit 32ef30002cee3661eb645cd14bcc4ff77ea10f45 Author: Simon Marchi Date: Fri Oct 27 09:01:36 2017 -0400 dwarf: Read register number as unsigned in DW_CFA_def_cfa* When displaying the .debug_frame section, the register numbers in the DW_CFA_def_cfa* statements are read as signed numbers. I have come across a target that has register 121, encoded as 0x79 in unsigned LEB128. Interpreting this as signed results in -7, which makes readelf display "r-7". The DWARF5 standard (6.4.2.2) states that the register numbers should be treated as unsigned LEB128. Simply replacing READ_SLEB with READ_ULEB resulted in warnings like these: /home/emaisin/src/binutils-gdb/binutils/dwarf.c: In function ‘display_debug_frames’: /home/emaisin/src/binutils-gdb/binutils/dwarf.c:355:17: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] if ((var) != _val) \ ^ /home/emaisin/src/binutils-gdb/binutils/dwarf.c:7866:8: note: in expansion of macro ‘READ_ULEB’ READ_ULEB (fc->cfa_reg); ^ ... so I also changed Frame_Chunk::cfa_reg to an unsigned int. binutils/ChangeLog: * dwarf.c (struct Frame_Chunk) : Change type to unsigned int. (display_debug_frames): Read CFA reg as an unsigned number. commit 7453e6b2ea451dfba68cf4442e58706d51f88411 Author: Simon Marchi Date: Fri Oct 27 08:57:10 2017 -0400 Add PR mention to previous commit commit a43f3893f6cb66dfca7f628cd159a008009ad06f Author: Patrick Frants Date: Thu Oct 26 22:26:08 2017 -0400 Fix broken recursion detection when printing static members Recursion detection for static members was broken. The implementation uses a growing (and shrinking) obstack object to simulate a stack of addresses (CORE_ADDR). Pushing addresses is implemented by calling obstack_grow(), while popping is implemented by calling obstack_free(). The latter is problematic because obstack_free() expects a pointer to the base of an object. When popping elements of the stack however, obstack_free() was called with the new top, which potentially is not the same as the base of the stack. This is unintended use and the effect is that obstack->next_free and obstack->object_base members are assigned the value of the new top, which equals an empty stack. Summary: popping elements would always result in an empty stack, which breaks the recursion detection. The fix shrinks the stack using obstack_blank_fast() with a negative value as described at the bottom of this page: https://gcc.gnu.org/onlinedocs/libiberty/Extra-Fast-Growing.html "You can use obstack_blank_fast with a “negative” size argument to make the current object smaller. Just don’t try to shrink it beyond zero length—there’s no telling what will happen if you do that. Earlier versions of obstacks allowed you to use obstack_blank to shrink objects. This will no longer work." The reproducer is added to gdb.cp/classes.exp, which fails without this patch. gdb/ChangeLog: * cp-valprint.c (cp_print_value_fields): Use obstack_blank_fast to rewind obstack. gdb/testsuite/ChangeLog: * gdb.cp/classes.exp (test_static_members): Test printing Outer::instance. * gdb.cp/classes.c (struct Inner, struct Outer): New. (Inner::instance, Outer::instance): New. commit 95904ac43c21694a609b4b8016b7fdfe8c2fc0fb Author: GDB Administrator Date: Fri Oct 27 00:00:28 2017 +0000 Automatic date update in version.in commit 23cc4e1b28d445e23827a09c454aa806f2b8c720 Author: Pedro Alves Date: Thu Oct 26 19:53:03 2017 +0100 Garbage collect remote.c:remote_async_terminal_ours_p remote.c:remote_async_terminal_ours_p stopped being useful after 048094accce2 ("target remote: Don't rely on immediate_quit (introduce quit handlers)") and commit 41fd2b0f5d95 ("Make input_fd be per UI"), which turned remote's terminal_inferior/ours methods into nops. gdb/ChangeLog: 2017-10-26 Pedro Alves * remote.c (remote_async_terminal_ours_p): Delete. (remote_open_1, remote_terminal_inferior, remote_terminal_ours): Remove references to 'remote_async_terminal_ours_p'. commit 514f60231cb5a0a070712729a7c29447cae86453 Author: H.J. Lu Date: Thu Oct 26 11:16:41 2017 -0700 x86: Check invalid XMM register in AVX512 gathers Extend invalid register check for AVX512 gathers to XMM register. PR gas/22352 * config/tc-i386.c (check_VecOperands): Also check XMM register for invalid register in AVX512 gathers. * testsuite/gas/i386/vgather-check.s: Add tests for AVX512 gathers with XMM register. * testsuite/gas/i386/x86-64-vgather-check.s: Likewise. * testsuite/gas/i386/vgather-check-error.l: Updated. * testsuite/gas/i386/vgather-check-none.d: Likewise. * testsuite/gas/i386/vgather-check-warn.d: Likewise. * testsuite/gas/i386/vgather-check-warn.e: Likewise. * testsuite/gas/i386/vgather-check.d: Likewise. * testsuite/gas/i386/x86-64-vgather-check-error.l: Likewise. * testsuite/gas/i386/x86-64-vgather-check-none.d: Likewise. * testsuite/gas/i386/x86-64-vgather-check-warn.d: Likewise. * testsuite/gas/i386/x86-64-vgather-check-warn.e: Likewise. * testsuite/gas/i386/x86-64-vgather-check.d: Likewise. commit 506981afaf6c77fbc26bcdc2eb4c24edca4255ef Author: Renlin Li Date: Thu Oct 26 15:40:45 2017 +0100 [PR21703]Adjust pr21703 tests on various targets. xfail tests for certain targets. Check shared library support for shared test. Relax pr21703-r.sd and pr21703-shared.sd with additional "#..." pattern lines. ld/ * testsuite/ld-elf/elf.exp: xfail pr21703 tests on specific targets. Only run shared lib test for targets which support it. * testsuite/ld-elf/pr21703-r.sd: Adjust the expected output. * testsuite/ld-elf/pr21703-shared.sd: Likewise. commit 4062f504eba4835579bcc360e9eff3e7d92f5a6c Author: James Greenhalgh Date: Thu Oct 26 11:30:40 2017 +0100 As Alan predicted at https://sourceware.org/ml/binutils/2017-10/msg00137.html the values in some Arm tests need updating after recent changes. These looked a bit spooky at first, but they are just a difference in the order we emit veneers and far jumps, so are not so scary after all. Checked with an arm-none-eabi tester and an arm-none-linux-gnueabi tester with no issues. * testsuite/ld-arm/cortex-a8-far.d: Update expected disassembly. * testsuite/ld-arm/farcall-group-size2: Likewise. * testsuite/ld-arm/farcall-group.d: Likewise. commit 6abc18bbbf03dc4aee0b0f2cd851d9bc9a983e20 Author: Yao Qi Date: Thu Oct 26 09:53:38 2017 +0100 Remove regular_breakpoint_inserted_here_p declaration There is no regular_breakpoint_inserted_here_p definition at all, so this patch removes the declaration. gdb: 2017-10-26 Yao Qi * breakpoint.h (regular_breakpoint_inserted_here_p): Remove. commit bd5225139c83a80aad542e46efb66fabf51bff91 Author: Yao Qi Date: Thu Oct 26 09:46:16 2017 +0100 const-fy breakpoint_ops->breakpoint_hit parameter aspace gdb: 2017-10-26 Yao Qi * break-catch-sig.c (signal_catchpoint_breakpoint_hit): Make aspace const. * break-catch-syscall.c (breakpoint_hit_catch_syscall): Likewise. * breakpoint.c (bpstat_check_location): Remove cast. (breakpoint_hit_catch_fork): Make aspce const. (breakpoint_hit_catch_solib): Likewise. (breakpoint_hit_catch_exec): Likewise. (breakpoint_hit_ranged_breakpoint): Likewise. (breakpoint_hit_watchpoint): Likewise. (base_breakpoint_breakpoint_hit): Likewise. (bkpt_breakpoint_hit): Likewise. (dprintf_breakpoint_hit): Likewise. (tracepoint_breakpoint_hit): Likewise. * breakpoint.h (breakpoint_ops) : Likewise. commit accd0bcdfe6914193bba8dec9e6311e608b5c498 Author: Yao Qi Date: Thu Oct 26 09:46:16 2017 +0100 const-fy function parameter struct address_space *aspace This patch changes the parameter "struct address_space *aspace" to "const address_space *aspace" in many functions. gdb: 2017-10-26 Yao Qi * breakpoint.c (breakpoint_location_address_match): Change "struct address_space *" to "const address_space". (breakpoint_location_address_range_overlap): Likewise. (breakpoint_here_p): Likewise. (breakpoint_in_range_p): Likewise. (moribund_breakpoint_here_p): Likewise. (bp_location_inserted_here_p): Likewise. (software_breakpoint_inserted_here_p): Likewise. (hardware_breakpoint_inserted_here_p): Likewise. (hardware_watchpoint_inserted_in_range): Likewise. (bpstat_check_location): Likewise. (bpstat_stop_status): Likewise. (breakpoint_address_match): Likewise. (breakpoint_address_match_range): Likewise. (breakpoint_location_address_match): Likewise. (breakpoint_location_address_range_overlap): Likewise. (insert_single_step_breakpoint): Likewise. (breakpoint_has_location_inserted_here): Likewise. (single_step_breakpoint_inserted_here_p): Likewise. (pc_at_non_inline_function): Likewise. * breakpoint.h (bpstat_stop_status): Update declaration. (breakpoint_here_p): Likewise. (breakpoint_in_range_p): Likewise. (moribund_breakpoint_here_p): Likewise. (breakpoint_inserted_here_p): Likewise. (software_breakpoint_inserted_here_p): Likewise. (hardware_breakpoint_inserted_here_p): Likewise. (breakpoint_has_location_inserted_here): Likewise. (single_step_breakpoint_inserted_here_p): Likewise. (hardware_watchpoint_inserted_in_range): Likewise. (breakpoint_address_match): Likewise. (insert_single_step_breakpoint): Likewise. (pc_at_non_inline_function): Likewise. * gdbthread.h (thread_has_single_step_breakpoint_here): Likewise. * record.c (record_check_stopped_by_breakpoint): Likewise. * record.h (record_check_stopped_by_breakpoint): Likewise. * thread.c (thread_has_single_step_breakpoint_here): Likewise. commit ca3e4ea52d21c5f48e12c302179daae80e5cd420 Author: GDB Administrator Date: Thu Oct 26 00:00:22 2017 +0000 Automatic date update in version.in commit 238c141b9807b43a0b04923dee64ba87df79e698 Author: Hans-Peter Nilsson Date: Thu Oct 26 01:11:06 2017 +0200 testsuite/gas/all/fill-1.s: Use L2 rather than .L2. For some targets, like mmix-knuth-mmixware, .L2 (and .L1) are invalid symbols. commit 8df93cb5652730d99242e7de86679d3930a2a1b6 Author: H.J. Lu Date: Wed Oct 25 08:44:54 2017 -0700 ld: Correct -z ibt documentation * ld.texinfo: Correct -z ibt. commit ac7936dfd0c85e5de2dfec45ca0dbf72baeffa51 Author: Yao Qi Date: Wed Oct 25 16:37:03 2017 +0100 s/get_regcache_arch (regcache)/regcache->arch ()/g This patches removes get_regcache_arch, and use regache->arch () instead. The motivation of this change is that I am going to move some basic stuff into a base class of regcache. I don't need to update "client" code regcache->arch (). On the other hand, this patch shortens the code a little bit. gdb: 2017-10-25 Yao Qi * aarch32-linux-nat.c (aarch32_gp_regcache_supply): Use regcache->arch () instead get_regcache_arch. * aarch64-fbsd-nat.c (aarch64_fbsd_fetch_inferior_registers): Likewise. (aarch64_fbsd_store_inferior_registers): Likewise. * aarch64-linux-nat.c (fetch_gregs_from_thread): Likewise. (store_gregs_to_thread): Likewise. (fetch_fpregs_from_thread): Likewise. (store_fpregs_to_thread): Likewise. * aarch64-tdep.c (aarch64_extract_return_value): Likewise. (aarch64_store_return_value): Likewise. (aarch64_software_single_step): Likewise. * aix-thread.c (aix_thread_wait): Likewise. (supply_reg32): Likewise. (supply_sprs64): Likewise. (supply_sprs32): Likewise. (fill_gprs64): Likewise. (fill_gprs32): Likewise. (fill_sprs64): Likewise. (fill_sprs32): Likewise. (store_regs_user_thread): Likewise. (store_regs_kernel_thread): Likewise. * alpha-bsd-nat.c (alphabsd_fetch_inferior_registers): Likewise. (alphabsd_store_inferior_registers): Likewise. * alpha-tdep.c (alpha_extract_return_value): Likewise. (alpha_store_return_value): Likewise. (alpha_deal_with_atomic_sequence): Likewise. (alpha_next_pc): Likewise. (alpha_software_single_step): Likewise. * amd64-bsd-nat.c (amd64bsd_fetch_inferior_registers): Likewise. (amd64bsd_store_inferior_registers): Likewise. * amd64-linux-nat.c (amd64_linux_fetch_inferior_registers): Likewise. (amd64_linux_store_inferior_registers): Likewise. * amd64-nat.c (amd64_supply_native_gregset): Likewise. (amd64_collect_native_gregset): Likewise. * amd64-obsd-tdep.c (amd64obsd_supply_uthread): Likewise. (amd64obsd_collect_uthread): Likewise. * amd64-tdep.c (amd64_supply_fpregset): Likewise. (amd64_collect_fpregset): Likewise. (amd64_supply_fxsave): Likewise. (amd64_supply_xsave): Likewise. (amd64_collect_fxsave): Likewise. (amd64_collect_xsave): Likewise. * arc-tdep.c (arc_write_pc): Likewise. * arch-utils.c (default_skip_permanent_breakpoint): Likewise. * arm-fbsd-nat.c (arm_fbsd_fetch_inferior_registers): Likewise. (arm_fbsd_store_inferior_registers): Likewise. * arm-linux-nat.c (fetch_vfp_regs): Likewise. (store_vfp_regs): Likewise. (arm_linux_fetch_inferior_registers): Likewise. (arm_linux_store_inferior_registers): Likewise. * arm-linux-tdep.c (arm_linux_supply_gregset): Likewise. (arm_linux_sigreturn_next_pc): Likewise. (arm_linux_get_next_pcs_syscall_next_pc): Likewise. * arm-nbsd-nat.c (arm_supply_gregset): Likewise. (fetch_register): Likewise. (store_register): Likewise. * arm-tdep.c (arm_is_thumb): Likewise. (displaced_in_arm_mode): Likewise. (bx_write_pc): Likewise. (arm_get_next_pcs_addr_bits_remove): Likewise. (arm_software_single_step): Likewise. (arm_extract_return_value): Likewise. (arm_store_return_value): Likewise. (arm_write_pc): Likewise. * bfin-tdep.c (bfin_extract_return_value): Likewise. * bsd-uthread.c (bsd_uthread_fetch_registers): Likewise. (bsd_uthread_store_registers): Likewise. * core-regset.c (fetch_core_registers): Likewise. * corelow.c (get_core_registers): Likewise. * cris-tdep.c (cris_store_return_value): Likewise. (cris_extract_return_value): Likewise. (find_step_target): Likewise. (find_step_target): Likewise. (cris_software_single_step): Likewise. * ctf.c (ctf_fetch_registers): Likewise. * darwin-nat.c (cancel_breakpoint): Likewise. * fbsd-tdep.c (fbsd_collect_thread_registers): Likewise. * frv-tdep.c (frv_extract_return_value): Likewise. * ft32-tdep.c (ft32_store_return_value): Likewise. (ft32_extract_return_value): Likewise. * go32-nat.c (fetch_register): Likewise. (go32_fetch_registers): Likewise. (go32_store_registers): Likewise. (store_register): Likewise. * h8300-tdep.c (h8300_extract_return_value): Likewise. (h8300_store_return_value): Likewise. * hppa-linux-nat.c (fetch_register): Likewise. (store_register): Likewise. (hppa_linux_fetch_inferior_registers): Likewise. (hppa_linux_store_inferior_registers): Likewise. * i386-darwin-nat.c (i386_darwin_fetch_inferior_registers): Likewise. (i386_darwin_store_inferior_registers): Likewise. * i386-gnu-nat.c (gnu_fetch_registers): Likewise. (gnu_store_registers): Likewise. * i386-linux-nat.c (fetch_register): Likewise. (store_register): Likewise. (supply_gregset): Likewise. (fill_gregset): Likewise. (i386_linux_fetch_inferior_registers): Likewise. (i386_linux_store_inferior_registers): Likewise. (i386_linux_resume): Likewise. * i386-linux-tdep.c (i386_linux_get_syscall_number_from_regcache): Likewise. * i386-nto-tdep.c (i386nto_supply_gregset): Likewise. * i386-obsd-nat.c (i386obsd_supply_pcb): Likewise. * i386-obsd-tdep.c (i386obsd_supply_uthread): Likewise. (i386obsd_collect_uthread): Likewise. * i386-tdep.c (i386_mmx_regnum_to_fp_regnum): Likewise. (i386_supply_gregset): Likewise. (i386_collect_gregset): Likewise. (i386_supply_fpregset): Likewise. (i386_collect_fpregset): Likewise. (i386_mpx_bd_base): Likewise. * i386-v4-nat.c (supply_fpregset): Likewise. (fill_fpregset): Likewise. * i387-tdep.c (i387_supply_fsave): Likewise. (i387_collect_fsave): Likewise. (i387_supply_fxsave): Likewise. (i387_collect_fxsave): Likewise. (i387_supply_xsave): Likewise. (i387_collect_xsave): Likewise. * ia64-linux-nat.c (ia64_linux_fetch_registers): Likewise. (ia64_linux_store_registers): Likewise. * ia64-tdep.c (ia64_access_rse_reg): Likewise. (ia64_extract_return_value): Likewise. (ia64_store_return_value): Likewise. (find_func_descr): Likewise. * inf-child.c (inf_child_fetch_inferior_registers): Likewise. * inf-ptrace.c (inf_ptrace_fetch_registers): Likewise. (inf_ptrace_store_registers): Likewise. * infrun.c (use_displaced_stepping): Likewise. (displaced_step_prepare_throw): Likewise. (resume): Likewise. (proceed): Likewise. (do_target_wait): Likewise. (adjust_pc_after_break): Likewise. (handle_inferior_event_1): Likewise. (handle_signal_stop): Likewise. (save_infcall_suspend_state): Likewise. (restore_infcall_suspend_state): Likewise. * iq2000-tdep.c (iq2000_extract_return_value): Likewise. * jit.c (jit_frame_prev_register): Likewise. * linux-nat.c (save_stop_reason): Likewise. (linux_nat_wait_1): Likewise. (resume_stopped_resumed_lwps): Likewise. * linux-record.c (record_linux_sockaddr): Likewise. (record_linux_msghdr): Likewise. (record_linux_system_call): Likewise. * linux-tdep.c (linux_collect_thread_registers): Likewise. * lm32-tdep.c (lm32_extract_return_value): Likewise. (lm32_store_return_value): Likewise. * m32c-tdep.c (m32c_read_flg): Likewise. (m32c_pseudo_register_read): Likewise. (m32c_pseudo_register_write): Likewise. * m32r-linux-tdep.c (m32r_linux_supply_gregset): Likewise. (m32r_linux_collect_gregset): Likewise. * m32r-tdep.c (m32r_store_return_value): Likewise. (m32r_extract_return_value): Likewise. * m68k-bsd-nat.c (m68kbsd_supply_fpregset): Likewise. (m68kbsd_collect_fpregset): Likewise. * m68k-bsd-tdep.c (m68kbsd_supply_fpregset): Likewise. * m68k-linux-nat.c (fetch_register): Likewise. (old_fetch_inferior_registers): Likewise. (old_store_inferior_registers): Likewise. (store_regs): Likewise. * m68k-tdep.c (m68k_svr4_extract_return_value): Likewise. (m68k_svr4_store_return_value): Likewise. * m88k-tdep.c (m88k_store_arguments): Likewise. * mi/mi-main.c (mi_cmd_data_list_changed_registers): Likewise. (mi_cmd_data_write_register_values): Likewise. * mips-fbsd-nat.c (mips_fbsd_fetch_inferior_registers): Likewise. (mips_fbsd_store_inferior_registers): Likewise. * mips-fbsd-tdep.c (mips_fbsd_supply_fpregs): Likewise. (mips_fbsd_supply_gregs): Likewise. (mips_fbsd_collect_fpregs): Likewise. (mips_fbsd_collect_gregs): Likewise. (mips_fbsd_supply_fpregset): Likewise. (mips_fbsd_collect_fpregset): Likewise. (mips_fbsd_supply_gregset): Likewise. (mips_fbsd_collect_gregset): Likewise. * mips-linux-nat.c (supply_gregset): Likewise. (fill_gregset): Likewise. (supply_fpregset): Likewise. (fill_fpregset): Likewise. * mips-linux-tdep.c (mips_supply_gregset): Likewise. (mips_fill_gregset): Likewise. (mips_supply_fpregset): Likewise. (mips_fill_fpregset): Likewise. (mips64_supply_gregset): Likewise. (micromips_linux_sigframe_validate): Likewise. * mips-nbsd-nat.c (mipsnbsd_fetch_inferior_registers): Likewise. (mipsnbsd_fetch_inferior_registers): Likewise. (mipsnbsd_store_inferior_registers): Likewise. * mips-nbsd-tdep.c (mipsnbsd_supply_fpregset): Likewise. (mipsnbsd_supply_gregset): Likewise. (mipsnbsd_iterate_over_regset_sections): Likewise. (mipsnbsd_supply_reg): Likewise. (mipsnbsd_supply_fpreg): Likewise. * mips-tdep.c (mips_in_frame_stub): Likewise. (mips_dummy_id): Likewise. (is_octeon_bbit_op): Likewise. (micromips_bc1_pc): Likewise. (extended_mips16_next_pc): Likewise. (mips16_next_pc): Likewise. (deal_with_atomic_sequence): Likewise. * moxie-tdep.c (moxie_process_readu): Likewise. * nios2-tdep.c (nios2_get_next_pc): Likewise. * nto-procfs.c (procfs_store_registers): Likewise. * ppc-fbsd-nat.c (ppcfbsd_fetch_inferior_registers): Likewise. (ppcfbsd_store_inferior_registers): Likewise. * ppc-linux-nat.c (fetch_vsx_register): Likewise. (fetch_altivec_register): Likewise. (get_spe_registers): Likewise. (fetch_spe_register): Likewise. (fetch_altivec_registers): Likewise. (fetch_all_gp_regs): Likewise. (fetch_all_fp_regs): Likewise. (store_vsx_register): Likewise. (store_altivec_register): Likewise. (set_spe_registers): Likewise. (store_spe_register): Likewise. (store_altivec_registers): Likewise. (store_all_gp_regs): Likewise. (store_all_fp_regs): Likewise. * ppc-linux-tdep.c (ppc_linux_supply_gregset): Likewise. (ppc_linux_collect_gregset): Likewise. (ppc_canonicalize_syscall): Likewise. (ppc_linux_record_signal): Likewise. (ppu2spu_prev_register): Likewise. * ppc-nbsd-nat.c (ppcnbsd_supply_pcb): Likewise. * ppc-obsd-nat.c (ppcobsd_fetch_registers): Likewise. (ppcobsd_store_registers): Likewise. * ppc-ravenscar-thread.c (ppc_ravenscar_generic_fetch_registers): Likewise. (ppc_ravenscar_generic_store_registers): Likewise. * procfs.c (procfs_fetch_registers): Likewise. (procfs_store_registers): Likewise. * ravenscar-thread.c (ravenscar_fetch_registers): Likewise. (ravenscar_store_registers): Likewise. (ravenscar_prepare_to_store): Likewise. * record-btrace.c (record_btrace_fetch_registers): Likewise. * record-full.c (record_full_wait_1): Likewise. (record_full_registers_change): Likewise. (record_full_store_registers): Likewise. (record_full_core_fetch_registers): Likewise. (record_full_save): Likewise. (record_full_goto_insn): Likewise. * regcache.c (regcache_register_size): Likewise. (get_regcache_arch): Remove. (regcache_read_pc): Likewise. * regcache.h (get_regcache_arch): Remove. * remote-sim.c (gdbsim_fetch_register): Likewise. (gdbsim_store_register): Likewise. * remote.c (fetch_register_using_p): Likewise. (send_g_packet): Likewise. (remote_prepare_to_store): Likewise. (store_registers_using_G): Likewise. * reverse.c (save_bookmark_command): Likewise. (goto_bookmark_command): Likewise. * rs6000-aix-tdep.c (branch_dest): Likewise. * rs6000-nat.c (rs6000_ptrace64): Likewise. (fetch_register): Likewise. * rs6000-tdep.c (ppc_supply_reg): Likewise. (ppc_collect_reg): Likewise. (ppc_collect_gregset): Likewise. (ppc_collect_fpregset): Likewise. (ppc_collect_vsxregset): Likewise. (ppc_collect_vrregset): Likewise. (ppc_displaced_step_hw_singlestep): Likewise. (rs6000_pseudo_register_read): Likewise. (rs6000_pseudo_register_write): Likewise. * s390-linux-nat.c (supply_gregset): Likewise. (fill_gregset): Likewise. (s390_linux_fetch_inferior_registers): Likewise. * s390-linux-tdep.c (s390_write_pc): Likewise. (s390_software_single_step): Likewise. (s390_all_but_pc_registers_record): Likewise. (s390_linux_syscall_record): Likewise. * sentinel-frame.c (sentinel_frame_prev_arch): Likewise. * sh-nbsd-nat.c (shnbsd_fetch_inferior_registers): Likewise. (shnbsd_store_inferior_registers): Likewise. * sh-tdep.c (sh_extract_return_value_nofpu): Likewise. (sh_extract_return_value_fpu): Likewise. (sh_store_return_value_nofpu): Likewise. (sh_corefile_supply_regset): Likewise. (sh_corefile_collect_regset): Likewise. * sh64-tdep.c (sh64_extract_return_value): Likewise. (sh64_store_return_value): Likewise. * sparc-linux-tdep.c (sparc32_linux_collect_core_fpregset): Likewise. * sparc-nat.c (sparc_fetch_inferior_registers): Likewise. (sparc_store_inferior_registers): Likewise. * sparc-ravenscar-thread.c (register_in_thread_descriptor_p): Likewise. (sparc_ravenscar_prepare_to_store): Likewise. * sparc-tdep.c (sparc32_store_arguments): Likewise. (sparc_analyze_control_transfer): Likewise. (sparc_step_trap): Likewise. (sparc_software_single_step): Likewise. (sparc32_gdbarch_init): Likewise. (sparc_supply_rwindow): Likewise. (sparc_collect_rwindow): Likewise. * sparc64-linux-tdep.c (sparc64_linux_collect_core_fpregset): Likewise. * sparc64-nbsd-nat.c (sparc64nbsd_supply_gregset): Likewise. (sparc64nbsd_collect_gregset): Likewise. (sparc64nbsd_supply_fpregset): Likewise. (sparc64nbsd_collect_fpregset): Likewise. * sparc64-tdep.c (sparc64_store_arguments): Likewise. (sparc64_supply_gregset): Likewise. (sparc64_collect_gregset): Likewise. (sparc64_supply_fpregset): Likewise. (sparc64_collect_fpregset): Likewise. * spu-linux-nat.c (spu_fetch_inferior_registers): Likewise. * spu-tdep.c (spu_unwind_sp): Likewise. (spu2ppu_prev_register): Likewise. (spu_memory_remove_breakpoint): Likewise. * stack.c (return_command): Likewise. * tic6x-tdep.c (tic6x_extract_signed_field): Likewise. * tracefile-tfile.c (tfile_fetch_registers): Likewise. * tracefile.c (trace_save_ctf): Likewise. * windows-nat.c (do_windows_fetch_inferior_registers): Likewise. (do_windows_store_inferior_registers): Likewise. (windows_resume): Likewise. * xtensa-linux-nat.c (fill_gregset): Likewise. (supply_gregset_reg): Likewise. * xtensa-tdep.c (xtensa_register_write_masked): Likewise. (xtensa_register_read_masked): Likewise. (xtensa_supply_gregset): Likewise. (xtensa_extract_return_value): Likewise. (xtensa_store_return_value): Likewise. commit edd079d9f6ca2f9ad21322b742269aec5de61190 Author: Ulrich Weigand Date: Wed Oct 25 15:32:23 2017 +0200 Target FP: Use target format throughout expression parsing When parsing floating-point literals, the language parsers currently use parse_float or some equivalent routine to parse the input string into a DOUBLEST, which is then stored within a OP_DOUBLE expression node. When evaluating the expression, the OP_DOUBLE is finally converted into a value in target format. On the other hand, *decimal* floating-point literals are parsed directly into target format and stored that way in a OP_DECFLOAT expression node. In order to eliminate the DOUBLEST, this patch therefore unifies the handling of binary and decimal floating- point literals and stores them both in target format within a new OP_FLOAT expression node, replacing both OP_DOUBLE and OP_DECFLOAT. In order to store literals in target format, the parse_float routine needs to know the type of the literal. All parsers therefore need to be changed to determine the appropriate type (e.g. by detecting suffixes) *before* calling parse_float, instead of after it as today. However, this change is mostly straightforward -- again, this is already done for decimal FP today. The core of the literal parsing is moved into a new routine floatformat_from_string, mirroring floatformat_to_string. The parse_float routine now calls either floatformat_from_string or decimal_from_sting, allowing it to handle any type of FP literal. All language parsers need to be updated. Some notes on specific changes to the various languages: - C: Decimal FP is now handled in parse_float, and no longer needs to be handled specially. - D: Straightforward. - Fortran: Still used a hard-coded "atof", also replaced by parse_float now. Continues to always use builtin_real_s8 as the type of literal, even though this is probably wrong. - Go: This used to handle "f" and "l" suffixes, even though the Go language actually doesn't support those. I kept this support for now -- maybe revisit later. Note the the GDB test suite for some reason actually *verifies* that GDB supports those unsupported suffixes ... - Pascal: Likewise -- this handles suffixes that are not supported in the language standard. - Modula-2: Like Fortran, used to use "atof". - Rust: Mostly straightforward, except for a unit-testing hitch. The code use to set a special "unit_testing" flag which would cause "rust_type" to always return NULL. This makes it not possible to encode a literal into target format (which type?). The reason for this flag appears to have been that during unit testing, there is no "rust_parser" context set up, which means no "gdbarch" is available to use its types. To fix this, I removed the unit_testing flag, and instead simply just set up a dummy rust_parser context during unit testing. - Ada: This used to check sizeof (DOUBLEST) to determine which type to use for floating-point literal. This seems questionable to begin with (since DOUBLEST is quite unrelated to target formats), and in any case we need to get rid of DOUBLEST. I'm now simply always using the largest type (builtin_long_double). gdb/ChangeLog: 2017-10-25 Ulrich Weigand * doublest.c (floatformat_from_string): New function. * doublest.h (floatformat_from_string): Add prototype. * std-operator.def (OP_DOUBLE, OP_DECFLOAT): Remove, replace by ... (OP_FLOAT): ... this. * expression.h: Do not include "doublest.h". (union exp_element): Replace doubleconst and decfloatconst by new element floatconst. * ada-lang.c (resolve_subexp): Handle OP_FLOAT instead of OP_DOUBLE. (ada_evaluate_subexp): Likewise. * eval.c (evaluate_subexp_standard): Handle OP_FLOAT instead of OP_DOUBLE and OP_DECFLOAT. * expprint.c (print_subexp_standard): Likewise. (dump_subexp_body_standard): Likewise. * breakpoint.c (watchpoint_exp_is_const): Likewise. * parse.c: Include "dfp.h". (write_exp_elt_dblcst, write_exp_elt_decfloatcst): Remove. (write_exp_elt_floatcst): New function. (operator_length_standard): Handle OP_FLOAT instead of OP_DOUBLE and OP_DECFLOAT. (operator_check_standard): Likewise. (parse_float): Do not accept suffix. Take type as input. Return bool. Return target format buffer instead of host DOUBLEST. Use floatformat_from_string and decimal_from_string to parse either binary or decimal floating-point types. (parse_c_float): Remove. * parser-defs.h: Do not include "doublest.h". (write_exp_elt_dblcst, write_exp_elt_decfloatcst): Remove. (write_exp_elt_floatcst): Add prototype. (parse_float): Update prototype. (parse_c_float): Remove. * c-exp.y: Do not include "dfp.h". (typed_val_float): Use byte buffer instead of DOUBLEST. (typed_val_decfloat): Remove. (DECFLOAT): Remove. (FLOAT): Use OP_FLOAT and write_exp_elt_floatcst. (parse_number): Update to new parse_float interface. Parse suffixes and determine type before calling parse_float. Handle decimal and binary FP types the same way. * d-exp.y (typed_val_float): Use byte buffer instead of DOUBLEST. (FLOAT_LITERAL): Use OP_FLOAT and write_exp_elt_floatcst. (parse_number): Update to new parse_float interface. Parse suffixes and determine type before calling parse_float. * f-exp.y: Replace dval by typed_val_float. (FLOAT): Use OP_FLOAT and write_exp_elt_floatcst. (parse_number): Use parse_float instead of atof. * go-exp.y (typed_val_float): Use byte buffer instead of DOUBLEST. (parse_go_float): Remove. (FLOAT): Use OP_FLOAT and write_exp_elt_floatcst. (parse_number): Call parse_float instead of parse_go_float. Parse suffixes and determine type before calling parse_float. * p-exp.y (typed_val_float): Use byte buffer instead of DOUBLEST. (FLOAT): Use OP_FLOAT and write_exp_elt_floatcst. (parse_number): Update to new parse_float interface. Parse suffixes and determine type before calling parse_float. * m2-exp.y: Replace dval by byte buffer val. (FLOAT): Use OP_FLOAT and write_exp_elt_floatcst. (parse_number): Call parse_float instead of atof. * rust-exp.y (typed_val_float): Use byte buffer instead of DOUBLEST. (lex_number): Call parse_float instead of strtod. (ast_dliteral): Use OP_FLOAT instead of OP_DOUBLE. (convert_ast_to_expression): Handle OP_FLOAT instead of OP_DOUBLE. Use write_exp_elt_floatcst. (unit_testing): Remove static variable. (rust_type): Do not check unit_testing. (rust_lex_tests): Do not set uint_testing. Set up dummy rust_parser. * ada-exp.y (type_float, type_double): Remove. (typed_val_float): Use byte buffer instead of DOUBLEST. (FLOAT): Use OP_FLOAT and write_exp_elt_floatcst. * ada-lex.l (processReal): Use parse_float instead of sscanf. commit e5d70d6b5a5c2832ad199ac1b91f68324b4a12c9 Author: Alan Modra Date: Wed Oct 25 21:59:14 2017 +1030 PR22348, conflicting global vars in crx and cr16 include/ PR 22348 * opcode/cr16.h (instruction): Delete. (cr16_words, cr16_allWords, cr16_currInsn): Delete. * opcode/crx.h (crx_cst4_map): Rename from cst4_map. (crx_cst4_maps): Rename from cst4_maps. (crx_no_op_insn): Rename from no_op_insn. (instruction): Delete. opcodes/ PR 22348 * cr16-dis.c (cr16_cinvs, instruction, cr16_currInsn): Make static. (cr16_words, cr16_allWords, processing_argument_number): Likewise. (imm4flag, size_changed): Likewise. * crx-dis.c (crx_cinvs, NUMCINVS, instruction, currInsn): Likewise. (words, allWords, processing_argument_number): Likewise. (cst4flag, size_changed): Likewise. * crx-opc.c (crx_cst4_map): Rename from cst4_map. (crx_cst4_maps): Rename from cst4_maps. (crx_no_op_insn): Rename from no_op_insn. gas/ PR 22348 * config/tc-crx.c (instruction, output_opcode): Make static. (relocatable, ins_parse, cur_arg_num): Likewise. (parse_insn): Adjust for renamed opcodes globals. (check_range): Likewise commit cc628f3dbb12c720dbc9ab714feeb197dc739944 Author: Alan Hayward Date: Wed Oct 25 09:06:41 2017 +0100 Add common AARCH64 REGNUM defines gdb/ * aarch64-tdep.h (enum aarch64_regnum): Remove. * arch/aarch64.h: New file. gdbserver/ * linux-aarch64-low.c (aarch64_fill_gregset): Replace defines with REGNO. (aarch64_store_gregset): Likewise. (aarch64_fill_fpregset): Likewise. (aarch64_store_fpregset): Likewise. commit e601d38b7cc222345d4128f45db18529b9fb477b Author: Alan Modra Date: Wed Oct 25 15:32:52 2017 +1030 Allow for __gnu_lto_slim prefixed with extra "_" Some targets prefix global symbols with "_". bfd/ * archive.c (_bfd_compute_and_write_armap): Match "__gnu_lto_slim" optionally prefixed with "_". * linker.c (_bfd_generic_link_add_one_symbol): Likewise. binutils/ * nm.c (filter_symbols): Match "__gnu_lto_slim" optionally prefixed with "_". gold/ * symtab.cc (Symbol_table::add_from_relobj): Match "__gnu_lto_slim" optionally prefixed with "_". ld/ * testsuite/ld-plugin/lto-3r.d: Match "__gnu_lto_v" optionally prefixed with "_". * testsuite/ld-plugin/lto-5r.d: Likewise. commit 94092126a05ee625bf05d48cb331472b8f87d235 Author: Alan Modra Date: Wed Oct 25 15:31:58 2017 +1030 Yet another fill-1 test fix tic4x fails due to being a 4 octets per byte target, while tic54x is 2 octets per byte. mmix still fails with fill-1.s:4: Error: unknown pseudo-op: `.l1:' fill-1.s:6: Error: unknown pseudo-op: `.l2:' fill-1.s:3: Error: .space specifies non-absolute value and if the labels are changed to L1 and L2 then mep-elf fails with fill-1.s:3: Error: .space specifies non-absolute value Since both of those look like they ought to be investigated by the target maintainers, I'm tweaking the test to fail on both targets. * testsuite/gas/all/fill-1.d: Exclude tic4x and tic54x. * testsuite/gas/all/fill-1.s: Use L1 rather than .L1. commit 711f5e559e8009f8033f3709d4fbe70c961a403a Author: GDB Administrator Date: Wed Oct 25 00:00:26 2017 +0000 Automatic date update in version.in commit db283f44015de0ae0129688bf0e8e4e02672f6ea Author: Hans-Peter Nilsson Date: Wed Oct 25 00:46:24 2017 +0200 Fix format typos in previous previous ld/ChangeLog entry commit 2e30886f1fa22fd28a1a91f5aae2ec033e2e54a9 Author: Hans-Peter Nilsson Date: Wed Oct 25 00:45:05 2017 +0200 testsuite/ld-riscv-elf/ld-riscv-elf.exp: Fix typo for istarget. commit 792ccf005f391f46e295e250f285d040ab105ab7 Author: Pedro Alves Date: Tue Oct 24 23:22:56 2017 +0100 Fix racy test in gdb.base/new-ui.exp I noticed gdb.base/new-ui.exp failing once here with: FAIL: gdb.base/new-ui.exp: do_test: delete all breakpoints on extra console (got interactive prompt) FAIL: gdb.base/new-ui.exp: do_test: main console: next causes no spurious output on other console FAIL: gdb.base/new-ui.exp: do_test: main console: breakpoint hit reported on other console The problem is 100% reproducible with check-read1: $ make check-read1 TESTS="gdb.*/new-ui.exp" testsuite/gdb.log shows: delete Delete all breakpoints? (y or n) [answered Y; input not from terminal] (gdb) FAIL: gdb.base/new-ui.exp: do_test: delete all breakpoints on extra console (got interactive prompt) This commit fixes the problem. gdb/testsuite/ChangeLog: 2017-10-24 Pedro Alves * gdb.base/new-ui.exp (do_test): Split "delete all breakpoints on extra console" test in two stages. commit 63a25ea0de6d2f6d45b26af8d9c808aa35962256 Author: Andrew Waterman Date: Thu Oct 19 11:21:44 2017 -0700 RISC-V: Fix disassembly of c.addi4spn, c.addi16sp, c.lui when imm=0 These are all invalid instructions, so they should not disassemble. opcodes/ChangeLog 2017-10-24 Andrew Waterman * riscv-opc.c (match_c_addi16sp) : New function. (match_c_addi4spn): New function. (match_c_lui): Don't allow 0-immediate encodings. (riscv_opcodes) : Use the above functions. : Likewise. : Likewise. : Likewise. gas/ChangeLog 2017-10-24 Andrew Waterman * testsuite/gas/riscv/c-addi16sp-fail.d: New test. testsuite/gas/riscv/c-addi16sp-fail.l: Likewise. testsuite/gas/riscv/c-addi16sp-fail.s: Likewise. testsuite/gas/riscv/c-addi4spn-fail.d: Likewise. testsuite/gas/riscv/c-addi4spn-fail.l: Likewise. testsuite/gas/riscv/c-addi4spn-fail.s: Likewise. testsuite/gas/riscv/riscv.exp: Add new tests. commit 09a7c6aa7a07f874f5357cde62b5753a10a5e107 Author: Ulrich Weigand Date: Tue Oct 24 18:34:41 2017 +0200 Use const reference for decimal_from_string argument No functional change. gdb/ChangeLog: 2017-10-24 Ulrich Weigand * dfp.h (decimal_from_string): Use const reference for argument. * dfp.c (decimal_from_string): Likewise. commit 8ba0dd515c1ba23318f28c6bb04c9da573855b50 Author: Ulrich Weigand Date: Tue Oct 24 18:01:39 2017 +0200 Target FP printing: Use floatformat_to_string in tdep code A few tdep files use target-specific printing routines to output values in the floating-point registers. To get rid of host floating-point code, this patch changes them to use floatformat_to_string instead. No functional change intended, the resulting output should look the same. ChangeLog: 2017-10-24 Ulrich Weigand * i387-tdep.c (print_i387_value): Use floatformat_to_string. * sh64-tdep.c (sh64_do_fp_register): Likewise. * mips-tdep.c (mips_print_fp_register): Likewise. commit 16e812b29e68c4a6fcad73b033716c4f385ce94f Author: Ulrich Weigand Date: Tue Oct 24 18:00:50 2017 +0200 Target FP printing: Simplify and fix ui_printf This patch adds support for handling format strings to both floatformat_to_string and decimal_to_string, and then uses those routines to implement ui_printf formatted printing. There is already a subroutine printf_decfloat that ui_printf uses to handle decimal FP. This is renamed to printf_floating and updated to handle both binary and decimal FP. This includes the following set of changes: - printf_decfloat currently parses the format string again to determine the intended target format. This seems superfluous since the common parsing code in parse_format_string already did this, but then did not pass the result on to its users. Fixed by splitting the decfloat_arg argument class into three distinct classes, and passing them through. - Now we can rename printf_decfloat to printf_floating and also call it for the argument classes representing binary FP types. - The code will now use the argclass to detect the type the value should be printed at, and converts the input value to this type if necessary. To remain compatible with current behavior, for binary FP the code instead tries to re-interpret the input value as a FP type of the same size if that exists. (Maybe this behavior is more confusing than useful -- but this can be changed later if we want to ...) - Finally, we can use floatformat_to_string / decimal_to_string passing the format string to perform the formatted output using the desired target FP type. Note that we no longer generate different code depending on whether or not the host supports "long double" -- this check is obsolete anyway since C++11 mandates "long double", and in any case a %lg format string is intended to refer to the *target* long double type, not the host version. Note also that formatted printing of DFP numbers may not work correctly, since it attempts to use the host printf to do so (and makes unwarranted assumptions about the host ABI while doing so!). This is no change to the current behavior -- I simply moved the code from printf_decfloat to the decimal_to_string routine in dfp.c. If we want to fix it in the future, that is a more appropriate place anyway. ChangeLog: 2017-10-24 Ulrich Weigand * common/format.h (enum argclass): Replace decfloat_arg by dec32float_arg, dec64float_arg, and dec128float_arg. * common/format.c (parse_format_string): Update to return new decimal float argument classes. * printcmd.c (printf_decfloat): Rename to ... (printf_floating): ... this. Add argclass argument, and use it instead of parsing the format string again. Add support for binary floating-point values, using floatformat_to_string. Convert value to the target format if it doesn't already match. (ui_printf): Call printf_floating instead of printf_decfloat, also for double_arg / long_double_arg. Pass argclass. * dfp.c (decimal_to_string): Add format string argument. * dfp.h (decimal_to_string): Likewise. * doublest.c (floatformat_to_string): Add format string argument. * doublest.h (floatformat_to_string): Likewise. commit fdf0cbc2b710cb5e01249e18f5a377a55eddc39b Author: Ulrich Weigand Date: Tue Oct 24 17:59:22 2017 +0200 Target FP printing: Simplify and fix print_floating The print_floating routine currently makes a lot of assumptions about host and target floating point formats. This patch cleans up many of those. One problem is that print_floating may currently be called with types that are not actually floating-point types, and it tries hard to output those as floating-point values anyway. However, there is only one single caller of print_floating where this can ever happen: print_scalar_formatted. And in fact, it is much simpler to handle the case where the value to be printed is not already of floating-point type right there. So this patch changes print_scalar_formatted to handle the 'f' format as follows: - If the value to be printed is already of floating-point type, just call print_floating on it. - Otherwise, if there is a standard target floating-point type of the same size as the value, call print_floating using that type. - Otherwise, just print the value as if the 'f' format had not been specified at all. This has the overall effect to printing everything the same way as the old code did, but is overall a lot simpler. (Also, it would allow us to change the above strategy more easily, if that might be a more intuitive user interface. For example, in the third case above, maybe an error would be more appropriate?) Given that change, print_floating can become much simpler. In particular, we now always have a floating-point format that we can consult. This means we can use the floating-point format to programmatically determine the number of digits necessary to print the value. The current code uses a hard-coded value of 9, 17, or 35 digits. Note that this matches the DECIMAL_DIG values for IEEE-32, IEEE-64, and IEEE-128. (Actually, for IEEE-128 the correct value is 36 -- the 35 seems to be an oversight.) The DECIMAL_DIG value is defined to be the smallest number so that any number in the target format, when printed to this number of digits and then scanned back into a binary floating-point number, will result in the original value. Now that we always have a FP format, we can just compute the DECIMAL_DIG value using the formula from the C standard. This will be correct for *all* FP formats, not just the above list, and it will be correct (as opposed to current code) if the target formats differ from the host ones. The patch moves the new logic to a new floatformat_to_string routine (analogous to the existing decimal_to_string). The print_floating routine now calls floatformat_to_string or decimal_to_string, making the separate print_decimal_floating and generic_val_print_decfloat routines unnecessary. gdb/ChangeLog: 2017-10-24 Ulrich Weigand * doublest.c (floatformat_precision): New routine. (floatformat_to_string): Likewise. * doublest.c (floatformat_to_string): Add prototype. * printcmd.c (print_scalar_formatted): Only call print_floating on floating-point types. * valprint.c: Do not include "floatformat.h". (generic_val_print_decfloat): Remove. (generic_val_print): Call generic_val_print_float for both TYPE_CODE_FLT and TYPE_CODE_DECFLOAT. (print_floating): Use floatformat_to_string. Handle decimal float. (print_decimal_floating): Remove, merge into floatformat_to_string. * value.h (print_decimal_floating): Remove. * Makefile.in: Do not build doublest.c with -Wformat-nonliteral. commit 3342be5dabeeaf2218dfbf4d38f92214612436f4 Author: Andrew Waterman Date: Sat Sep 23 18:04:16 2017 -0700 RISC-V: Only relax to C.LUI when imm != 0 and rd != 0/2 This matches the ISA specification. This also adds two tests: one to make sure the assembler rejects invalid 'c.lui's, and one to make sure we only relax valid 'c.lui's. bfd/ChangeLog 2017-10-24 Andrew Waterman * elfnn-riscv.c (_bfd_riscv_relax_lui): Don't relax to c.lui when rd is x0. include/ChangeLog 2017-10-24 Andrew Waterman * opcode/riscv.h (VALID_RVC_LUI_IMM): c.lui can't load the immediate 0. gas/ChangeLog 2017-10-24 Andrew Waterman * testsuite/gas/riscv/c-lui-fail.d: New testcase. gas/testsuite/gas/riscv/c-lui-fail.l: Likewise. gas/testsuite/gas/riscv/c-lui-fail.s: Likewise. gas/testsuite/gas/riscv/riscv.exp: Likewise. ld/ChangeLog 2017-10-24 Andrew Waterman * ld/testsuite/ld-riscv-elf/c-lui.d: New testcase. ld/testsuite/ld-riscv-elf/c-lui.s: Likewise. ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp: New test suite. commit 3779bbe01b4ec1e5ae0a5c555f838999ba88ac50 Author: Palmer Dabbelt Date: Tue Oct 24 06:58:48 2017 -0700 Fix my previous gas/ChangeLog entry commit da5f19a2534936376228943de85fdd60f6ddd839 Author: H.J. Lu Date: Tue Oct 24 07:47:32 2017 -0700 i386: Support .code64 directive only with 64-bit bfd Without 64-bit bfd, we can't properly support .code64 directive in 32-bit mode. * config/tc-i386.c (md_pseudo_table): Add .code64 directive only if BFD64 is defined. * testsuite/gas/i386/code64-inval.l: New file. * gas/testsuite/gas/i386/code64-inval.s: Likewise. * gas/testsuite/gas/i386/code64.d: Likewise. * gas/testsuite/gas/i386/code64.s: Likewise. * testsuite/gas/i386/i386.exp: Run mixed-mode-reloc32, att-regs, intel-regs, intel-expr and string-ok tests only if assembler supports x86-64. Run code64 and code64-inval. commit 5033013f17524964564dac5d422739ae5214729e Author: Ulrich Weigand Date: Tue Oct 24 16:33:53 2017 +0200 Fix gdb.opt/inline-cmds.exp regressions When sorting pending blocks in end_symtab_get_static_block, blocks with the same starting address must remain in the original order to preserve inline function caller/callee relationships. The original code seems to have implicitly relied on the fact that the glibc qsort implemention actually (in the common case) provides a stable sort, although this is not guaranteed by the standard. But the GNU libstdc++ std::sort implementation is *not* stable. gdb/ChangeLog: 2017-10-24 Ulrich Weigand * buildsym.c (end_symtab_get_static_block): Use std::stable_sort. commit 93f4de3929aeb3e21d57950bfa96539599a92f2a Author: Renlin Li Date: Tue Oct 24 12:42:30 2017 +0100 [BFD][PR21703]Override the new defined symbol with the old normal symbol when --allow-multiple-definition is provided. The behavior of _bfd_elf_merge_symbol and _bfd_generic_link_add_one_symbol is inconsistent. In multiple definition case, _bfd_elf_merge_symbol decided to override the old symbol definition with the new defintion, (size, type, target data) In _bfd_generic_link_add_one_symbol, it simply return without doing anything because of allow-multiple-definition is provided. This leaves the symbol in a wrong state. Here, following the documentation, I made this patch to force the old definition override the new definition if the old symbol is not dynamic or weak. Because, in those two cases, it's expected to do some merge. I have checked that, those two cases are properly handled. bfd/ PR ld/21703 * elflink.c (_bfd_elf_merge_symbol): Handle multiple definition case. ld/ PR ld/21703 * testsuite/ld-elf/elf.exp: Run new tests. * testsuite/ld-elf/pr21703-1.s: New. * testsuite/ld-elf/pr21703-2.s: New. * testsuite/ld-elf/pr21703-3.s: New. * testsuite/ld-elf/pr21703-4.s: New. * testsuite/ld-elf/pr21703-r.sd: New. * testsuite/ld-elf/pr21703-shared.sd: New. * testsuite/ld-elf/pr21703.sd: New. * testsuite/ld-elf/pr21703.ver: New. commit eb2bfbadc159ff1463e58daf24c4ad5d1a23796d Author: Pedro Alves Date: Tue Oct 24 10:43:45 2017 +0100 Reindent gdb.threads/attach-into-signal.exp A previous patch removed one nesting level. gdb/testsuite/ChangeLog: 2017-10-24 Pedro Alves * gdb.threads/attach-into-signal.exp (corefunc): Reindent. commit 1f75a6516a4b480b5521dfb4e1a0721887ab5cdc Author: Pedro Alves Date: Tue Oct 24 10:43:35 2017 +0100 Drop /proc/PID/status polling from gdb.threads/attach-into-signal.exp I noticed that the 'with_test_prefix "stoppedtry $stoppedtry"' prefix in this testcase is unnecessary, because inside that block there are no pass/fail calls. In fact the block includes a comment saying: # No PASS message as we may be looping in multiple # attempts. but looking deeper at this I noticed a few odd things with this code block: 1. This code is assuming that the second line in the /proc/PID/status files is the "State:" line, which may have been true when this was originally written, but is not true on my machine at least (Linux 4.8.13). $ cat /proc/self/status Name: cat Umask: 0002 State: R (running) So nowadays, that 'string match "*(stopped)*"' is running against the "Umask:" line and thus always returns false, meaning the loop always breaks on $stoppedtry == 0. 2. The loop seems to be waiting for the process to become "(stopped)", but if so then that 'if {![string match]}' check is reversed, it should be checking 'if {[string match]}' instead, because "string match" returns true if the string matches, not 0. 3. But if we fixed all that, we'd still run into the simple fact that nothing is actually stopping the test's inferior process before GDB attaches... The top of the testcase says: # This test was created by modifying attach-stopped.exp. ... and attach-stopped.exp does have: # Stop the program remote_exec build "kill -s STOP ${testpid}" but then attach-stopped.exp doesn't have an equivalent /proc/PID/status poll loop... (Maybe it could.) So remove this whole loop as useless. gdb/testsuite/ChangeLog: 2017-10-24 Pedro Alves * gdb.threads/attach-into-signal.exp: Remove whole "stoppedtry" loop. commit 779990d9f0a169215b3619a8a1cd120550320793 Author: Pedro Alves Date: Tue Oct 24 10:43:35 2017 +0100 Fix unstable test names in gdb.threads/attach-into-signal.exp Currently, if you diff testsuite/gdb.sum of two testsuite runs you'll often see spurious hunks like these: -PASS: gdb.threads/attach-into-signal.exp: nonthreaded: attempt 2: attach (pass 2), pending signal catch +PASS: gdb.threads/attach-into-signal.exp: nonthreaded: attempt 1: attach (pass 2), pending signal catch PASS: gdb.threads/attach-into-signal.exp: successfully compiled posix threads test case PASS: gdb.threads/attach-into-signal.exp: threaded: handle SIGALRM stop print pass -PASS: gdb.threads/attach-into-signal.exp: threaded: attempt 1: attach (pass 1), pending signal catch -PASS: gdb.threads/attach-into-signal.exp: threaded: attempt 1: attach (pass 2), pending signal catch +PASS: gdb.threads/attach-into-signal.exp: threaded: attempt 2: attach (pass 1), pending signal catch +PASS: gdb.threads/attach-into-signal.exp: threaded: attempt 4: attach (pass 2), pending signal catch Fix this by removing the "attempt $attempt" test prefix. The attempt number can be retrieved from gdb.log instead, since the testcase is already using "verbose -log" to that effect. (The 'with_test_prefix "stoppedtry $stoppedtry"' prefix is unnecessary too, because inside that block there are no pass/fail calls. In fact the block includes a comment saying: # No PASS message as we may be looping in multiple # attempts. but I'll drop that whole loop in the next patch instead.) After this commit we'll show: PASS: gdb.threads/attach-into-signal.exp: nonthreaded: handle SIGALRM stop print pass PASS: gdb.threads/attach-into-signal.exp: nonthreaded: attach (pass 1), pending signal catch PASS: gdb.threads/attach-into-signal.exp: nonthreaded: attach (pass 2), pending signal catch PASS: gdb.threads/attach-into-signal.exp: successfully compiled posix threads test case PASS: gdb.threads/attach-into-signal.exp: threaded: handle SIGALRM stop print pass PASS: gdb.threads/attach-into-signal.exp: threaded: attach (pass 1), pending signal catch PASS: gdb.threads/attach-into-signal.exp: threaded: attach (pass 2), pending signal catch (I've avoided reindenting to make the patch easier to maintain/read. I'll reindent the blocks after this is in.) gdb/testsuite/ChangeLog: 2017-10-24 Pedro Alves * gdb.threads/attach-into-signal.exp (corefunc): Remove "attach $attempt" test prefix. commit ad9b8f5d022f777f32cceab9856f47a5b6afcce1 Author: Pedro Alves Date: Tue Oct 24 10:43:34 2017 +0100 Fix unstable test names in gdb.python/py-objfile.exp Currently, if you diff testsuite/gdb.sum of different builds you see this spurious hunk: -PASS: gdb.python/py-objfile.exp: get python valueof "sep_objfile.build_id" (6a0bfcab663f9810ccff33c756afdebb940037d4) +PASS: gdb.python/py-objfile.exp: get python valueof "sep_objfile.build_id" (1f5531c657c57777b05fc95baa0025fd1d115c3b) Fix this by syncing get_python_valueof with get_integer_valueof, which stopped outputting the value in commit 2f20e312aad6 ("get_integer_valueof: Don't output value in test name"). After this commit we'll show: PASS: gdb.python/py-objfile.exp: get python valueof "sep_objfile.build_id" As the comment explicitly says get_python_valueof is modeled on get_integer_valueof, I went ahead and also added the optional 'test' parameter while at it. gdb/testsuite/ChangeLog: 2017-10-24 Pedro Alves * lib/gdb-python.exp (get_python_valueof): Add 'test' optional parameter and handle it. Don't output read value in test name. commit fee6da6e1d96796f8aa8308b3833a3e4cdb409ff Author: Pedro Alves Date: Tue Oct 24 10:43:34 2017 +0100 Fix unstable test names in gdb.gdb/unittest.exp Currently, if you diff testsuite/gdb.sum of two builds built from different source directories you see this spurious hunk: -PASS: gdb.gdb/unittest.exp: maintenance check xml-descriptions /home/pedro/gdb1/src/gdb/testsuite/../features +PASS: gdb.gdb/unittest.exp: maintenance check xml-descriptions /home/pedro/gdb2/src/gdb/testsuite/../features After this commit we'll show instead: PASS: gdb.gdb/unittest.exp: maintenance check xml-descriptions ${srcdir}/../features gdb/testsuite/ChangeLog: 2017-10-24 Pedro Alves * gdb.gdb/unittest.exp ('maintenance check xml-descriptions'): Use custom test name. commit 10389c2c8b56b2519441e55bf16f77882fb897cb Author: Pedro Alves Date: Tue Oct 24 10:43:33 2017 +0100 Fix unstable test names in gdb.base/startup-with-shell.exp Currently, if you diff testsuite/gdb.sum of two builds in different directories you see these spurious hunks: -PASS: gdb.base/startup-with-shell.exp: touch /home/pedro/gdb1/build/gdb/testsuite/outputs/gdb.base/startup-with-shell/unique-file.unique-extension +PASS: gdb.base/startup-with-shell.exp: touch /home/pedro/gdb2/build/gdb/testsuite/outputs/gdb.base/startup-with-shell/unique-file.unique-extension -PASS: gdb.base/startup-with-shell.exp: startup_with_shell = on; run_args = *.unique-extension: set args /home/pedro/gdb1/build/gdb/testsuite/outputs/gdb.base/startup-with-shell/*.unique-extension +PASS: gdb.base/startup-with-shell.exp: startup_with_shell = on; run_args = *.unique-extension: set args /home/pedro/gdb2/build/gdb/testsuite/outputs/gdb.base/startup-with-shell/*.unique-extension -PASS: gdb.base/startup-with-shell.exp: startup_with_shell = off; run_args = *.unique-extension: set args /home/pedro/gdb1/build/gdb/testsuite/outputs/gdb.base/startup-with-shell/*.unique-extension +PASS: gdb.base/startup-with-shell.exp: startup_with_shell = off; run_args = *.unique-extension: set args /home/pedro/gdb2/build/gdb/testsuite/outputs/gdb.base/startup-with-shell/*.unique-extension Since the run_args arguments are already shown in the test prefix, we can change the "set args" test name to literally "set args $run_args". I.e., after this commit we'll show: PASS: gdb.base/startup-with-shell.exp: startup_with_shell = on; run_args = *.unique-extension: set args $run_args PASS: gdb.base/startup-with-shell.exp: startup_with_shell = off; run_args = *.unique-extension: set args $run_args PASS: gdb.base/startup-with-shell.exp: startup_with_shell = on; run_args = $TEST: set args $run_args PASS: gdb.base/startup-with-shell.exp: startup_with_shell = off; run_args = $TEST: set args $run_args gdb/testsuite/ChangeLog: 2017-10-24 Pedro Alves * gdb.base/startup-with-shell.exp ('touch $unique_file'): Don't include the unstable output directory name in the test's name. (initial_setup_simple) <'set args'>: Use custom test name. commit a80e65a9d590f8817e4acd5a62363319b6a1f961 Author: Pedro Alves Date: Tue Oct 24 10:43:33 2017 +0100 Fix unstable test names in gdb.arch/arc-tdesc-cpu.exp Currently if you diff testsuite/gdb.sum of two builds built from different source trees you see this spurious hunk: -PASS: gdb.arch/arc-tdesc-cpu.exp: set tdesc filename /home/pedro/gdb1/src/gdb/testsuite/gdb.arch/arc-tdesc-cpu.xml +PASS: gdb.arch/arc-tdesc-cpu.exp: set tdesc filename /home/pedro/gdb2/src/gdb/testsuite/gdb.arch/arc-tdesc-cpu.xml After this commit we'll show this instead in gdb.sum: PASS: gdb.arch/arc-tdesc-cpu.exp: set tdesc filename $srcdir/gdb.arch/arc-tdesc-cpu.xml gdb/testsuite/ChangeLog: 2017-10-24 Pedro Alves * gdb.arch/arc-tdesc-cpu.exp ('set tdesc filename'): Use gdb_test with explicit test name. commit 2c3f27ed0d6a91bc0812bb2fc6965fd03a413fee Author: Palmer Dabbelt Date: Fri Oct 6 12:06:45 2017 -0700 RISC-V: Don't emit 2-byte NOPs if the C extension is disabled Systems without the C extension mandate 4-byte alignment for instructions, so there is no reason to allow for 2-byte alignment. This change avoids emitting lots of unimplemented instructions into object files on non-C targets, which users keep reporting as a bug. While this isn't actually a bug (as none of the offsets in object files are relevant until RISC-V), it is ugly. gas/ChangeLog 2017-10-23 Palmer Dabbelt * config/tc-riscv.c (riscv_frag_align_code): Align code by 4 bytes on non-RVC systems. commit fee0ea1f2d3079f7fc3d48109c2a81cc7b7f241c Author: GDB Administrator Date: Tue Oct 24 00:00:31 2017 +0000 Automatic date update in version.in commit 4a8f9fc2b2467ae8bcfb75392c10fde5a0053740 Author: H.J. Lu Date: Mon Oct 23 14:44:04 2017 -0700 i386: Don't add elf32_x86_64 to supported emulations For 32-bit BFD, since elf64-x86-64.o isn't compiled in, "-m elf32_x86_64" never worked. Don't add elf32_x86_64 to supported emulations with 32-bit BFD. * configure.tgt (i[3-7]86-*-linux-*): Move elf32_x86_64 from targ_extra_libpath to targ64_extra_libpath. ----------------------------------------------------------------------- hooks/post-receive -- Repository for Project Archer.