aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-11-07show_commandsusers/palves/per_ui_repeatPedro Alves4-16/+59
2017-11-07x_commandPedro Alves2-76/+100
2017-11-07set_current_salPedro Alves2-95/+133
2017-11-07saved_command_linePedro Alves4-18/+20
2017-11-07Add some more breakpoint/location range testsPedro Alves2-0/+17
Some extra thoroughness tests that I had over here. gdb/testsuite/ChangeLog: 2017-11-07 Pedro Alves <palves@redhat.com> * gdb.cp/ena-dis-br-range.exp: Add more tests.
2017-11-07Make breakpoint/location number parsing error output consistentPedro Alves6-83/+207
... 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 <palves@redhat.com> * 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 <palves@redhat.com> * 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.
2017-11-07Add base 'enable/disable invalid location range' testsPedro Alves2-0/+42
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 <palves@redhat.com> * gdb.cp/ena-dis-br-range.exp: Add tests.
2017-11-07Breakpoint location parsing: always error instead of warningPedro Alves4-31/+32
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 <palves@redhat.com> * 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 <palves@redhat.com> * gdb.base/ena-dis-br.exp: Don't expect "warning:".
2017-11-07Allow enabling/disabling breakpoint location rangesXavier Roirand9-121/+471
When a breakpoint has multiple locations, like e.g.: Num Type Disp Enb Address What 1 breakpoint keep y <MULTIPLE> 1.1 y 0x080486a2 in void foo<int>()... 1.2 y 0x080486ca in void foo<double>()... [....] 1.5 y 0x080487fa in void foo<long>()... it's possible to enable/disable the individual locations using the '<breakpoint_number>.<location_number>' 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): <breakpoint_number>.<first_location_number>-<last_location_number> For example, the command above can now be simplified to: (gdb) disable 1.2-5 gdb/ChangeLog: 2017-11-07 Xavier Roirand <roirand@adacore.com> Pedro Alves <palves@redhat.com> * 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 <roirand@adacore.com> Pedro Alves <palves@redhat.com> * gdb.texinfo (Set Breaks): Document support for breakpoint location ranges in the enable/disable commands. gdb/testsuite/ChangeLog: 2017-11-07 Xavier Roirand <roirand@adacore.com> Pedro Alves <palves@redhat.com> * 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.
2017-11-07This patch similarly to the AArch64 one enables Dot Product support by ↵Tamar Christina4-87/+120
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.
2017-11-07PowerPC64 statistics messageAlan Modra2-10/+18
Fixes "linker stubs in 1 groups". * elf64-ppc.c (ppc64_elf_build_stubs): Correct pluralization in statistics message.
2017-11-07bundle_lock message tidyAlan Modra3-13/+20
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.
2017-11-07readelf ngettext fixesAlan Modra196-406/+709
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.
2017-11-07gas and ld pluralization fixesAlan Modra17-46/+144
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.
2017-11-07Require ngettext in test of system gettext implementationAlan Modra4-23/+30
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.
2017-11-07ngettext supportAlan Modra13-47/+138
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.
2017-11-07Automatic date update in version.inGDB Administrator1-1/+1
2017-11-06Update my e-mail address.Luis Machado2-1/+5
gdb/ChangeLog: 2017-11-06 Luis Machado <luis.machado@linaro.org> * MAINTAINERS (Write After Approval): Update my e-mail address.
2017-11-06Simplify child_terminal_inferiorPedro Alves3-24/+12
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 <palves@redhat.com> * 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.
2017-11-06Test attaching to a process that isn't a process group leaderPedro Alves3-0/+126
The patch at <https://sourceware.org/ml/gdb-patches/2017-11/msg00039.html> 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 <palves@redhat.com> * gdb.base/attach-non-pgrp-leader.c: New. * gdb.base/attach-non-pgrp-leader.exp: New.
2017-11-06Don't check termio.h and sgtty.h in common/common.m4 eitherPedro Alves7-15/+13
common/common.m4 still had checks for termio.h/sgtty.h that are stale now. Remove them. gdb/ChangeLog: 2017-11-06 Pedro Alves <palves@redhat.com> * 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 <palves@redhat.com> * config.in, configure: Regenerate.
2017-11-06Eliminate STOP_SIGNAL, use SIGTSTP directlyPedro Alves4-25/+34
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 <palves@redhat.com> * 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.
2017-11-06Don't set terminal flags twice in a rowPedro Alves2-9/+5
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 <fnf@specifix.com> AuthorDate: Thu Aug 5 01:33:45 1993 +0000 gdb/ChangeLog: 2017-11-06 Pedro Alves <palves@redhat.com> * inflow.c (child_terminal_inferior, child_terminal_ours_1): No longer set flags twice in row.
2017-11-06Assume termios is available, remove support for termio and sgttyPedro Alves22-524/+104
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 <palves@redhat.com> * 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 <palves@redhat.com> * 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.
2017-11-06Target FP: Merge doublest.c and dfp.c into target-float.cUlrich Weigand7-1427/+1291
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 <uweigand@de.ibm.com> * 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.
2017-11-06Target FP: Remove unused floating-point routinesUlrich Weigand7-224/+30
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 <uweigand@de.ibm.com> * 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.
2017-11-06Target FP: Remove convert_typed_floating from tdep filesUlrich Weigand12-60/+106
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 <uweigand@de.ibm.com> * 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.
2017-11-06Target FP: Handle interfaces to scripting languagesUlrich Weigand6-11/+124
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 <uweigand@de.ibm.com> * 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.
2017-11-06Target FP: Perform Ada fixed-point scaling in target formatUlrich Weigand5-76/+97
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 <uweigand@de.ibm.com> * 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.
2017-11-06Target FP: Add binop and compare routines to target-float.{c,h}Ulrich Weigand5-211/+258
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 <uweigand@de.ibm.com> * target-float.c: Include <math.h>. (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.
2017-11-06Target FP: Add conversion routines to target-float.{c,h}Ulrich Weigand4-36/+205
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 <uweigand@de.ibm.com> * 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.
2017-11-06Target FP: Add string routines to target-float.{c,h}Ulrich Weigand11-57/+96
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 <uweigand@de.ibm.com> * 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.
2017-11-06Target FP: Introduce target-float.{c,h}Ulrich Weigand11-36/+164
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 <uweigand@de.ibm.com> * 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.
2017-11-06Automatic date update in version.inGDB Administrator1-1/+1
2017-11-05Proper bound check in _bfd_doprnt_scanAlan Modra2-6/+12
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.
2017-11-05PR22397, BFD internal error when message locale isn't CAlan Modra2-31/+317
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.
2017-11-05Automatic date update in version.inGDB Administrator1-1/+1
2017-11-05powerpc TLS in PIEsAlan Modra3-46/+92
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.
2017-11-05PowerPC readonly_dynrelocsAlan Modra3-28/+40
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.
2017-11-05hppa-linux TLS relocsAlan Modra2-111/+170
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.
2017-11-05PR22394, hppa-linux-ld fails to emit dynamic relocationsAlan Modra2-37/+94
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.
2017-11-04Use std::vector in h8300-tdep.cTom Tromey2-10/+11
This changes h8300-tdep.c to use std::vector, allowing the removal of a cleanup. gdb/ChangeLog 2017-11-04 Tom Tromey <tom@tromey.com> * h8300-tdep.c (h8300_push_dummy_call): Use std::vector.
2017-11-04Introduce gdb_breakpoint_upTom Tromey8-41/+63
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 <tom@tromey.com> * 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
2017-11-04Use unique_xmalloc_ptr in c_type_print_baseTom Tromey2-10/+7
This changes c_type_print_base to use unique_xmalloc_ptr, removing a cleanup. gdb/ChangeLog 2017-11-04 Tom Tromey <tom@tromey.com> * c-typeprint.c (c_type_print_base): Use gdb::unique_xmalloc_ptr.
2017-11-04Remove cleanups from linux-tdep.cTom Tromey2-44/+29
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 <tom@tromey.com> * 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.
2017-11-04Use gdb::byte_vector in ppc-linux-tdep.cTom Tromey2-13/+9
This removes a cleanup from ppc-linux-tdep.c, replacing it with gdb::byte_vector. gdb/ChangeLog 2017-11-04 Tom Tromey <tom@tromey.com> * ppc-linux-tdep.c (ppc_linux_get_syscall_number): Use gdb::byte_vector.
2017-11-04Remove make_cleanup_free_objfileTom Tromey5-24/+19
This replaces make_cleanup_free_objfile with std::unique_ptr. gdb/ChangeLog 2017-11-04 Tom Tromey <tom@tromey.com> * objfiles.c (do_free_objfile_cleanup): Remove. * compile/compile-object-load.c (compile_object_load): Update. * objfiles.h (make_cleanup_free_objfile): Remove.
2017-11-04Use gdb::def_vector in sparc64-tdep.cTom Tromey2-9/+11
This removes a cleanup from sparc64-tdep.c, replacing it with gdb::def_vector. gdb/ChangeLog 2017-11-04 Tom Tromey <tom@tromey.com> * sparc64-tdep.c (do_examine): Use gdb::def_vector. (adi_read_versions): Change "tags" to "gdb_byte *". (adi_print_versions): Likewise.
2017-11-04Replace start_rbreak_breakpoints and end_rbreak_breakpointsTom Tromey4-48/+33
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 <tom@tromey.com> * 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.
2017-11-04Remove directive-searched cleanupsTom Tromey4-62/+17
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 <tom@tromey.com> * 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.