aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-12-08Automatic date update in version.inGDB Administrator1-1/+1
2017-12-07Validate explicit locations with early terminationKeith Seitz4-2/+17
breakpoints/22569 involves an internal error generated by the rather innocent looking command: (gdb) break -source test.cpp main .../linespec.c:3302: internal-error: void decode_line_full(...): Assertion `result.size () == 1 || canonical->pre_expanded' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) The input string is tokenized into "-source", "test.cpp", and "main" (input parsing breaks on whitespace). create_breakpoint is then called with the explicit location (containing only the source file name) and "main" as the extra_string argument. No SaLs are created for this underspecified explicit location, and the "result.size () == 1" evaluates false (as does the pre_expanded condition). This triggers the assertion. Normally string_to_explicit_location validates the input string. However, the presence of the string "main" causes the parser to exit early: 802 else 803 { 804 /* End of the explicit location specification. 805 Stop parsing and return whatever explicit location was 806 parsed. */ 807 *argp = start; 808 return location; 809 } This bypasses the validation that is done a few lines down in this function which would have emitted the expected error. This patch fixes that. Additionally, this patch also fixes an inconsistency with error reporting in this use case: (gdb) b -source foo Source filename requires function, label, or line offset. (gdb) b -source foo main No source file named foo. These two commands should have elicited the same error message. gdb/ChangeLog: PR breakpoints/22569 * location.c (string_to_explicit_location): When terminating parsing early, break out of enclosing loop instead of returning. gdb/testsuite/ChangeLog: PR breakpoints/22569 * gdb.linespec/ls-errs.exp: Change expected result of "break -source this file has spaces.c -line 3". Check that an explicit source file followed by whitespace is identified as an invalid explicit location.
2017-12-07Record nested typesKeith Seitz14-86/+1684
GDB currently does not track types defined in classes. Consider: class A { public: class B { public: class C { }; }; }; (gdb) ptype A type = class A { <no data fields> } This patch changes this behavior so that GDB records these nested types and displays them to the user when he has set the (new) "print type" option "nested-type-limit." Example: (gdb) set print type nested-type-limit 1 (gdb) ptype A type = class A { <no data fields> class A::B { <no data fields> }; } (gdb) set print type nested-type-limit 2 type = class A { <no data fields> class A::B { <no data fields> class A::B::C { <no data fields> }; }; } By default, the code maintains the status quo, that is, it will not print any nested type definitions at all. Testing is carried out via cp_ptype_class which required quite a bit of modification to permit recursive calling (for the nested types). This was most easily facilitated by turning the ptype command output into a queue. Upshot: the test suite now has stack and queue data structures that may be used by test writers. gdb/ChangeLog * NEWS (New commands): Mention set/show print type nested-type-limit. * c-typeprint.c (c_type_print_base): Print out nested types. * dwarf2read.c (struct typedef_field_list): Rename to ... (struct decl_field_list): ... this. Change all uses. (struct field_info) <nested_types_list, nested_types_list_count>: New fields. (add_partial_symbol): Look for nested type definitions in C++, too. (dwarf2_add_typedef): Rename to ... (dwarf2_add_type_defn): ... this. (type_can_define_types): New function. Update assertion to use type_can_define_types. Permit NULL for a field's name. (process_structure_scope): Handle child DIEs of types that can define types. Copy the list of nested types into the type struct. * gdbtypes.h (struct typedef_field): Rename to ... (struct decl_field): ... this. Change all uses. [is_protected, is_private]: New fields. (struct cplus_struct_type) <nested_types, nested_types_count>: New fields. (TYPE_NESTED_TYPES_ARRAY, TYPE_NESTED_TYPES_FIELD) (TYPE_NESTED_TYPES_FIELD_NAME, TYPE_NESTED_TYPES_FIELD_TYPE) (TYPE_NESTED_TYPES_COUNT, TYPE_NESTED_TYPES_FIELD_PROTECTED) (TYPE_NESTED_TYPES_FIELD_PRIVATE): New macros. * typeprint.c (type_print_raw_options, default_ptype_flags): Add default value for print_nested_type_limit. (print_nested_type_limit): New static variable. (set_print_type_nested_types, show_print_type_nested_types): New functions. (_initialize_typeprint): Register new commands for set/show `print-nested-type-limit'. * typeprint.h (struct type_print_options) [print_nested_type_limit]: New field. gdb/testsuite/ChangeLog * gdb.cp/nested-types.cc: New file. * gdb.cp/nested-types.exp: New file. * lib/cp-support.exp: Load data-structures.exp library. (debug_cp_test_ptype_class): New global. (cp_ptype_class_verbose, next_line): New procedures. (cp_test_ptype_class): Add and document new parameter `recursive_qid'. Add and document new return value. Switch the list of lines to a queue. Add support for new `type' key for nested type definitions. Add debugging/troubleshooting messages. * lib/data-structures.exp: New file. gdb/doc/ChangeLog * gdb.texinfo (Symbols): Document "set print type nested-type-limit" and "show print type nested-type-limit".
2017-12-07Fix wrong prefix in py-breakpoint.expSimon Marchi2-73/+76
The prefix in test_bkpt_explicit_loc is wrong. Instead of using with_test_prefix directly, define test_bkpt_explicit_loc with proc_with_prefix. gdb/testsuite/ChangeLog: * gdb.python/py-breakpoint.exp (test_bkpt_explicit_loc): Define with proc_with_prefix, don't use with_test_prefix.
2017-12-07Fix regression in "commands"Tom Tromey4-3/+22
Pedro pointed out a regression in "commands", where trying to clear a breakpoint's command list would fail: (top-gdb) commands Type commands for breakpoint(s) 3, one per line. End with a line saying just "end". >end No breakpoints specified. (top-gdb) I believe the bug was introduced by my patch that changes counted_command_line to be a shared_ptr. This causes the problem because now the counted_command_line in commands_command_1 can be NULL, whereas previously it never could be. After some discussion, we agreed to simply remove the error case from commands_command_1. 2017-12-07 Tom Tromey <tom@tromey.com> PR breakpoints/22511: * breakpoint.c (commands_command_1): Don't throw an exception when no commands have been read. 2017-12-07 Tom Tromey <tom@tromey.com> * gdb.base/break.exp: Add test for empty "commands".
2017-12-07Fix build with g++ 6.3.1Adam Stylinski2-1/+7
With g++ 6.3.1: target-descriptions.c: In member function ‘virtual void print_c_tdesc::visit_pre(const target_desc*)’: target-descriptions.c:1836:16: error: types may not be defined in a for-range-declaration [-Werror] for (const struct bfd_arch_info *compatible : e->compatible) ^~~~~~ I think at some point the forward declaration of this struct had been removed and declared as a typedef. This fixes that. gdb/ChangeLog: 2017-12-07 Adam Stylinski <adam.stylinski@etegent.com> PR c++/21222 * target-descriptions.c (print_c_tdesc::visit_pre): Change type of range-for variable.
2017-12-07Initialize target description early in IPAYao Qi6-26/+81
Target descriptions are allocated lazily, that is fine in GDBserver, but it is not safe to call malloc in gdb_collect in IPA, because we can set a fast tracepoint in malloc, and when the tracepoint is hit, gdb_collect/malloc is called, deadlock or memory corruption may be triggered. #0 0xf7cfc200 in malloc () #1 0xf7efdc07 in operator new(unsigned int) () #2 0xf7ef7636 in allocate_target_description() () #3 0xf7efcbe1 in i386_create_target_description(unsigned long long, bool) () #4 0xf7efb474 in i386_linux_read_description(unsigned long long) () #5 0xf7efb190 in get_ipa_tdesc(int) () #6 0xf7ef9baa in gdb_collect () The fix is to initialize all target descriptions earlier, when the IPA is loaded. In order to guarantee malloc is not called in IPA in gdb_collect, I change the test to set a breakpoint on malloc, if IPA gdb_collect calls malloc, program will hit the breakpoint, and test fail. continue Continuing. Thread 1 "" hit Breakpoint 5, 0xf7cfc200 in malloc () (gdb) FAIL: gdb.trace/ftrace.exp: advance through tracing gdb/gdbserver: 2017-12-07 Yao Qi <yao.qi@linaro.org> * linux-aarch64-ipa.c (initialize_low_tracepoint): Call aarch64_linux_read_description. * linux-amd64-ipa.c (idx2mask): New array. (get_ipa_tdesc): Move idx2mask out. (initialize_low_tracepoint): Initialize target descriptions. * linux-i386-ipa.c (idx2mask): New array. (get_ipa_tdesc): Move idx2mask out. (initialize_low_tracepoint): Initialize target descriptions. gdb/testsuite: 2017-12-07 Yao Qi <yao.qi@linaro.org> * gdb.trace/ftrace.exp (run_trace_experiment): Set breakpoint on malloc and catch syscall.
2017-12-07Add virtual destructor to selftestSimon Marchi2-0/+5
Clang 6 shows this warning In file included from /home/emaisin/src/binutils-gdb/gdb/common/selftest.c:19: In file included from /home/emaisin/src/binutils-gdb/gdb/common/common-defs.h:92: In file included from /home/emaisin/src/binutils-gdb/gdb/common/gdb_unique_ptr.h:23: In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/memory:81: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/unique_ptr.h:76:2: error: delete called on 'selftests::selftest' that is abstract but has non-virtual destructor [-Werror,-Wdelete-non-virtual-dtor] delete __ptr; ^ /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/unique_ptr.h:236:4: note: in instantiation of member function 'std::default_delete<selftests::selftest>::operator()' requested here get_deleter()(__ptr); ^ /home/emaisin/src/binutils-gdb/gdb/common/selftest.c:57:17: note: in instantiation of member function 'std::unique_ptr<selftests::selftest, std::default_delete<selftests::selftest> >::~unique_ptr' requested here tests[name] = std::unique_ptr<selftest> (test); ^ The error is legitimate, we (the unique_ptr) are deleting selftest objects through the base pointer, so technically the destructor should be virtual, so that the destructor of the subclass is invoked. gdb/ChangeLog: * common/selftest.h (struct selftest): Add virtual destructor.
2017-12-07Implement explicit locations for Python breakpoints.Phil Muldoon8-33/+245
This introduces several new keywords to the bppy_init constructor. The spec parameter is now optional but mutually exclusive to the explicit keywords source, label, function and line. gdb/ChangeLog 2017-12-07 Phil Muldoon <pmuldoon@redhat.com> * python/py-breakpoint.c (bppy_init): Use string_to_event_location over basic location code. Implement explicit location keywords. (bppy_init_validate_args): New function. * NEWS: Document Python explicit breakpoint locations. doc/ChangeLog 2017-12-07 Phil Muldoon <pmuldoon@redhat.com> * python.texi (Breakpoints In Python): Add text relating to allowed explicit locations and keywords in gdb.Breakpoints. testsuite/ChangeLog 2017-12-07 Phil Muldoon <pmuldoon@redhat.com> * gdb.python/py-breakpoint.exp (test_bkpt_explicit_loc): Add new tests for explicit locations.
2017-12-07gdb/MAINTAINERS: restore m68hc11, score and xstormy16 entriesJoel Brobecker2-0/+9
This patch restores some entries removed by a recent patch whose purpose was to update the list of active maintainers. I thought that, the target information was purely to document the scope of the given target, and thus could be removed is maintainerless. But, in fact, those entries are still useful, as a number of scripts (eg: gdb_buildall.sh) use that information to build GDB with all targets enabled. gdb/ChangeLog: * MAINTAINERS: Restore target entries for m68hc11-elf, score-elf and xstormy16-elf, incorrectly removed in a previous patch meant to only update the list of active maintainers.
2017-12-07Objcopy interleave testAlan Modra3-4/+13
PR 22465 * testsuite/ld-elf/interleave.s: Use .data sections and provide section attrs. * testsuite/ld-elf/interleave.ld: Discard other sections. Adjust for changed section names.
2017-12-07mcore-elf lacks shared lib supportAlan Modra2-1/+4
elf32-mcore.c has no backend create_dynamic_sections function so can't support shared libs. * emulparams/elf32mcore.sh (GENERATE_SHLIB_SCRIPT): Don't define.
2017-12-07Rewrite check_shared_lib_supportAlan Modra2-52/+16
* testsuite/lib/ld-lib.exp (check_shared_lib_support): Ask ld under test whether -shared is supported.
2017-12-07Automatic date update in version.inGDB Administrator1-1/+1
2017-12-06target_set_syscall_catchpoint, use gdb::array_view and boolPedro Alves8-44/+56
I noticed that we're passing down a data/size pair to target_ops::to_set_syscall_catchpoint. This commit makes use of gdb::array_view instead. While at it, use bool where appropriate as well. gdb/ChangeLog: * break-catch-syscall.c (insert_catch_syscall) (remove_catch_syscall): Adjust to pass reference to inf_data->syscalls_counts directly via gdb::array_view. * fbsd-nat.c (fbsd_set_syscall_catchpoint): Adjust to use bool and gdb::array_view. * linux-nat.c (linux_child_set_syscall_catchpoint): Likewise. * remote.c (remote_set_syscall_catchpoint): Likewise. * target-debug.h (target_debug_print_bool): New. (define target_debug_print_gdb_array_view_const_int): New. * target-delegates.c: Regenerate. * target.h (target_ops) <to_set_syscall_catchpoint>: Use gdb::array_view and bool. (target_set_syscall_catchpoint): Likewise.
2017-12-06Fix syscall group completionSimon Marchi2-8/+9
The test gdb.base/catch-syscall.exp has been failing since commit 3d415c26bad3a15eed00d2ddf85c4268df77a4cc Remove cleanups from break-catch-syscall.c The reason is that we are putting into the group_ptr array a pointer to the buffer of the local string object. If the string is small enough to fit in the internal string buffer (used for small string optimizations), the pointer will point to the local object directly. So even if we std::move the string to the vector, the pointer in group_ptr will still point to the local object. When we reuse that object (technically a new instance, but most likely the same memory) for the next syscall, we'll overwrite the previous string. The result is that we'll get less results than expected, since there will be duplicates. We'll also run into problems if we push the string to the vector, and then record the c_str () pointer using the string object in the vector. The vector might get reallocated, the string may move in memory, and our pointer in group_ptr will point to stale memory. Instead, we have to push all the strings first, then, when we know the vector won't change anymore, build the group_ptr array. This is what this patch does. gdb/ChangeLog: * break-catch-syscall.c (catch_syscall_completer): Get pointers to syscall group strings after building the string vector.
2017-12-06Objcopy interleave fails if section address not multiple of interleave.Jim Wilson7-0/+69
PR 22465 binutils/ * objcopy.c (copy_section): New local extra. If isection->lma not exactly divisible by interleave, then bias from. Also adjust osection->lma if necessary. ld/ * testsuite/ld-elf/interleave-0.d, testsuite/ld-elf/interleave-4.d, * testsuite/ld-elf/interleave.ld, testsuite/ld-elf/interleave.s: New.
2017-12-06remote: Make qXfer packets respect corresponding "set remote foo-packet"Pedro Alves4-7/+46
I've noticed that "set remote target-features-packet off" before connecting has no effect -- GDB still fetches a target description anyway. The problem is that while most "set remote foo-packet" commands were fixed by: From 4082afcc3d1af9d8063d1c8e02deb34a8b97a489 Mon Sep 17 00:00:00 2001 From: Pedro Alves <palves@redhat.com> Date: Fri, 25 Apr 2014 18:07:02 +0100 Subject: [PATCH] Fix several "set remote foo-packet on/off" commands. <https://sourceware.org/ml/gdb-patches/2014-04/msg00006.html> the "qXfer" packets where missed. This commit fixes that. I've changed remote_search_memory too for consistency (seems like those are the last direct references to packet->support), though the difference is not observable because the qSearch:memory packet is auto probed. Note gdb.base/find-unmapped.exp already exercises explicit "set remote search-memory-packet off". gdb/ChangeLog: 2017-12-06 Pedro Alves <palves@redhat.com> * remote.c (remote_query_supported): Don't send "xmlRegisters=" if "qXfer:features:read"" is disabled. (remote_write_qxfer, remote_read_qxfer, remote_search_memory): Check packet_config_support instead of packet->support directly. gdb/testsuite/ChangeLog: 2017-12-06 Pedro Alves <palves@redhat.com> * gdb.arch/i386-avx.exp: If testing with a RSP target, check force-disabling XML descriptions. -- gdb/remote.c | 16 +++++++++------- gdb/testsuite/gdb.arch/i386-avx.exp | 25 +++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 7 deletions(-)
2017-12-06Tell the linker testsuite that lm32-rtems toolchains do not support the ↵Nick Clifton2-0/+6
generation of shared libraries. * testsuite/lib/ld-lib.exp (check_shared_lib_support): Return false for lm32-rtems targets.
2017-12-06PR22552, readelf heap buffer overflow in load_debug_sectionAlan Modra2-6/+17
PR 22552 * readelf.c (process_file_header): Don't assume XINDEX case value for e_shstrndx is within bounds. (load_debug_section): Sanity test e_shstrndx before attempting to read .shstrtab. Wrap long lines.
2017-12-06BFD whitespace fixesAlan Modra297-26166/+26251
Binutils is supposed to use tabs. In my git config I have whitespace = indent-with-non-tab,space-before-tab,trailing-space and I got annoyed enough seeing red in "git diff" output to fix the problems. * doc/header.sed: Trim trailing space when splitting lines. * aix386-core.c, * aout-adobe.c, * aout-arm.c, * aout-cris.c, * aout-ns32k.c, * aout-target.h, * aout-tic30.c, * aoutf1.h, * aoutx.h, * arc-got.h, * arc-plt.def, * arc-plt.h, * archive.c, * archive64.c, * archures.c, * armnetbsd.c, * bfd-in.h, * bfd.c, * bfdio.c, * binary.c, * bout.c, * cache.c, * cisco-core.c, * coff-alpha.c, * coff-apollo.c, * coff-arm.c, * coff-h8300.c, * coff-i386.c, * coff-i860.c, * coff-i960.c, * coff-m68k.c, * coff-m88k.c, * coff-mcore.c, * coff-mips.c, * coff-ppc.c, * coff-rs6000.c, * coff-sh.c, * coff-stgo32.c, * coff-tic4x.c, * coff-tic54x.c, * coff-tic80.c, * coff-we32k.c, * coff-x86_64.c, * coff-z80.c, * coff-z8k.c, * coff64-rs6000.c, * coffcode.h, * coffgen.c, * cofflink.c, * coffswap.h, * compress.c, * corefile.c, * cpu-alpha.c, * cpu-arm.c, * cpu-avr.c, * cpu-bfin.c, * cpu-cr16.c, * cpu-cr16c.c, * cpu-crx.c, * cpu-d10v.c, * cpu-frv.c, * cpu-ft32.c, * cpu-i370.c, * cpu-i960.c, * cpu-ia64-opc.c, * cpu-ip2k.c, * cpu-lm32.c, * cpu-m32r.c, * cpu-mcore.c, * cpu-microblaze.c, * cpu-mips.c, * cpu-moxie.c, * cpu-mt.c, * cpu-nios2.c, * cpu-ns32k.c, * cpu-or1k.c, * cpu-powerpc.c, * cpu-pru.c, * cpu-sh.c, * cpu-spu.c, * cpu-v850.c, * cpu-v850_rh850.c, * cpu-xgate.c, * cpu-z80.c, * dwarf1.c, * dwarf2.c, * ecoff.c, * ecofflink.c, * ecoffswap.h, * elf-bfd.h, * elf-eh-frame.c, * elf-hppa.h, * elf-m10200.c, * elf-m10300.c, * elf-s390-common.c, * elf-strtab.c, * elf-vxworks.c, * elf.c, * elf32-am33lin.c, * elf32-arc.c, * elf32-arm.c, * elf32-avr.c, * elf32-avr.h, * elf32-bfin.c, * elf32-cr16.c, * elf32-cr16c.c, * elf32-cris.c, * elf32-crx.c, * elf32-d10v.c, * elf32-d30v.c, * elf32-dlx.c, * elf32-epiphany.c, * elf32-fr30.c, * elf32-frv.c, * elf32-ft32.c, * elf32-h8300.c, * elf32-hppa.c, * elf32-i386.c, * elf32-i860.c, * elf32-i960.c, * elf32-ip2k.c, * elf32-lm32.c, * elf32-m32c.c, * elf32-m32r.c, * elf32-m68hc11.c, * elf32-m68hc12.c, * elf32-m68hc1x.c, * elf32-m68hc1x.h, * elf32-m68k.c, * elf32-m88k.c, * elf32-mcore.c, * elf32-mep.c, * elf32-metag.c, * elf32-microblaze.c, * elf32-mips.c, * elf32-moxie.c, * elf32-msp430.c, * elf32-mt.c, * elf32-nds32.c, * elf32-nds32.h, * elf32-nios2.c, * elf32-or1k.c, * elf32-pj.c, * elf32-ppc.c, * elf32-ppc.h, * elf32-pru.c, * elf32-rl78.c, * elf32-rx.c, * elf32-s390.c, * elf32-score.c, * elf32-score.h, * elf32-score7.c, * elf32-sh-symbian.c, * elf32-sh.c, * elf32-sh64.c, * elf32-sparc.c, * elf32-spu.c, * elf32-tic6x.c, * elf32-tilegx.c, * elf32-tilegx.h, * elf32-tilepro.c, * elf32-tilepro.h, * elf32-v850.c, * elf32-vax.c, * elf32-wasm32.c, * elf32-xc16x.c, * elf32-xgate.c, * elf32-xgate.h, * elf32-xstormy16.c, * elf32-xtensa.c, * elf64-alpha.c, * elf64-hppa.c, * elf64-ia64-vms.c, * elf64-mips.c, * elf64-mmix.c, * elf64-ppc.c, * elf64-s390.c, * elf64-sh64.c, * elf64-sparc.c, * elf64-tilegx.c, * elf64-tilegx.h, * elf64-x86-64.c, * elfcore.h, * elflink.c, * elfn32-mips.c, * elfnn-aarch64.c, * elfnn-ia64.c, * elfnn-riscv.c, * elfxx-aarch64.c, * elfxx-aarch64.h, * elfxx-ia64.c, * elfxx-ia64.h, * elfxx-mips.c, * elfxx-riscv.c, * elfxx-sparc.c, * elfxx-tilegx.c, * elfxx-x86.c, * elfxx-x86.h, * freebsd.h, * hash.c, * host-aout.c, * hp300hpux.c, * hppabsd-core.c, * hpux-core.c, * i386aout.c, * i386linux.c, * i386lynx.c, * i386mach3.c, * i386msdos.c, * i386netbsd.c, * ieee.c, * ihex.c, * irix-core.c, * libaout.h, * libbfd-in.h, * libbfd.c, * libcoff-in.h, * libnlm.h, * libpei.h, * libxcoff.h, * linker.c, * lynx-core.c, * m68k4knetbsd.c, * m68klinux.c, * m68knetbsd.c, * m88kmach3.c, * mach-o-aarch64.c, * mach-o-arm.c, * mach-o-i386.c, * mach-o-target.c, * mach-o-x86-64.c, * mach-o.c, * mach-o.h, * merge.c, * mipsbsd.c, * mmo.c, * netbsd.h, * netbsd-core.c, * newsos3.c, * nlm-target.h, * nlm32-ppc.c, * nlm32-sparc.c, * nlmcode.h, * ns32k.h, * ns32knetbsd.c, * oasys.c, * opncls.c, * pc532-mach.c, * pdp11.c, * pe-arm.c, * pe-i386.c, * pe-mcore.c, * pe-mips.c, * pe-x86_64.c, * peXXigen.c, * pef.c, * pef.h, * pei-arm.c, * pei-i386.c, * pei-mcore.c, * pei-x86_64.c, * peicode.h, * plugin.c, * ppcboot.c, * ptrace-core.c, * reloc.c, * riscix.c, * rs6000-core.c, * section.c, * som.c, * som.h, * sparclinux.c, * sparcnetbsd.c, * srec.c, * stabs.c, * sunos.c, * syms.c, * targets.c, * tekhex.c, * trad-core.c, * vax1knetbsd.c, * vaxnetbsd.c, * verilog.c, * versados.c, * vms-alpha.c, * vms-lib.c, * vms-misc.c, * wasm-module.c, * wasm-module.h, * xcofflink.c, * xsym.c, * xsym.h: Whitespace fixes. * bfd-in2.h, * libbfd.h, * libcoff.h: Regenerate.
2017-12-06Fix Common symbol override test failsAlan Modra6-0/+53
Fixes fails on SH and NDS32 introduced by dyn_reloc tidy. * elf32-lm32.c (lm32_elf_check_relocs): Skip non-ALLOC sections. * elf32-m32r.c (m32r_elf_check_relocs): Likewise. * elf32-nds32.c (nds32_elf_check_relocs): Likewise. * elf32-or1k.c (or1k_elf_check_relocs): Likewise. * elf32-sh.c (sh_elf_check_relocs): Likewise.
2017-12-06Enable shared lib tests for frv, lm32, m32r, microblaze, nds32 and or1kAlan Modra2-6/+11
These claim to support shared libs when configuring for <target>-linux (in contrast to <target>-elf which doesn't support shared libs). * testsuite/lib/ld-lib.exp (check_shared_lib_support): Return true for frv, lm32, m32r, microblaze, nds32 and or1k linux targets.
2017-12-06dyn_relocs tidyAlan Modra16-627/+295
Many targets define their own dyn_relocs struct when they could use struct elf_dyn_relocs. This patch tidies that, and uses readonly_dynrelocs in a few more places. The SH adjust_dynamic_symbol had some really weird code dating back to 2002 that looked over dynamic relocations for any in SEC_HAS_CONTENTS or SEC_READONLY sections, rather than just the usual SEC_READONLY sections. So basically any dynamic relocation. What's more, the SH relocate_section has no support for emitting dynamic relocations in non-PIC. In other words, SH has no support for avoiding copy relocs in non-PIC. I've made that more obvious by using "if (0 && ..)" in asjust_dynamic_symbol. Unfortunately, LM32, M32R, NDS32, and OR1K copied the bogus SH adjust_dynamic_symbol code. So none of those targets would have avoided copy relocs. LM32, M32R, NDS32 get the "if (0)" treatment too. (LM32 is even more broken in that non_got_ref is never set.) OR1K relocate_section looks like it might support dynamic relocs in non-PIC, so I've enabled the copy reloc avoidance code for that target. * elf32-hppa.c (struct elf32_hppa_dyn_reloc_entry): Delete. Use struct elf_dyn_relocs throughout file instead. (elf32_hppa_adjust_dynamic_symbol): Comment tidy. * elf32-lm32.c (struct elf_lm32_dyn_relocs): Delete. Use struct elf_dyn_relocs throughout file instead. (lm32_elf_adjust_dynamic_symbol): Use readonly_dynrelocs, but disable. Disable -z no-copyreloc too. * elf32-m32r.c (struct elf_m32r_dyn_relocs): Delete. Use struct elf_dyn_relocs throughout file instead. (m32r_elf_adjust_dynamic_symbol): Use readonly_dynrelocs, but disable. Disable -z no-copyreloc too. * elf32-metag.c (struct elf_metag_dyn_reloc_entry): Delete. Use struct elf_dyn_relocs throughout file instead. (elf_metag_adjust_dynamic_symbol): Use readonly_dynrelocs. * elf32-microblaze.c (struct elf32_mb_dyn_relocs): Delete. Use struct elf_dyn_relocs throughout file instead. (readonly_dynrelocs): New function. (microblaze_elf_adjust_dynamic_symbol): Use it. * elf32-nds32.c (struct elf_nds32_dyn_relocs): Delete. Use struct elf_dyn_relocs throughout file instead. (nds32_elf_adjust_dynamic_symbol): Use readonly_dynrelocs, but disable. Disable -z no-copyreloc too. * elf32-nios2.c (struct elf32_nios2_dyn_relocs): Delete. Use struct elf_dyn_relocs throughout file instead. * elf32-or1k.c (struct elf_or1k_dyn_relocs): Delete. Use struct elf_dyn_relocs throughout file instead. (or1k_elf_adjust_dynamic_symbol): Use readonly_dynrelocs. * elf32-sh.c (struct elf_sh_dyn_relocs): Delete. Use struct elf_dyn_relocs throughout file instead. (sh_elf_adjust_dynamic_symbol): Use readonly_dynrelocs, but disable. Disable -z no-copyreloc too. * elf32-tilepro.c (struct tilepro_elf_dyn_relocs): Delete. Use struct elf_dyn_relocs throughout file instead. (tilepro_elf_adjust_dynamic_symbol): Use readonly_dynrelocs. * elfnn-riscv.c (struct riscv_elf_dyn_relocs): Delete. Use struct elf_dyn_relocs throughout file instead. (riscv_elf_adjust_dynamic_symbol): Use readonly_dynrelocs. * elfxx-sparc.c (struct _bfd_sparc_elf_dyn_relocs): Delete. Use struct elf_dyn_relocs throughout file instead. (_bfd_sparc_elf_adjust_dynamic_symbol): Use readonly_dynrelocs. * elfxx-tilegx.c (struct tilegx_elf_dyn_relocs): Delete. Use struct elf_dyn_relocs throughout file instead. (tilegx_elf_adjust_dynamic_symbol): Use readonly_dynrelocs. * elf32-s390.c (elf_s390_adjust_dynamic_symbol): Use readonly_dynrelocs. * elf64-s390.c (elf_s390_adjust_dynamic_symbol): Use readonly_dynrelocs.
2017-12-06Comment tidyAlan Modra4-3/+9
Past tense is wrong for a comment before some action. * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Comment tidy. * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise. * elfnn-aarch64.c (elfNN_aarch64_adjust_dynamic_symbol): Likewise.
2017-12-06Automatic date update in version.inGDB Administrator1-1/+1
2017-12-05Really fix riscv shared library __global_pointer$ problem.Jim Wilson14-68/+43
ld/ * emulparams/elf32lriscv-defs.sh (SDATA_START_SYMBOLS): Remove HIDDEN. Don't define __global_pointer$ when CREATE_SHLIB. * testsuite/ld-riscv-elf/gp-hidden-64.rd, * testsuite/ld-riscv-elf/gp-hidden-lib.rd, * testsuite/ld-riscv-elf/gp-hidden-lib.s, * testsuite/ld-riscv-elf/gp-hidden-ver-64.rd, * testsuite/ld-riscv-elf/gp-hidden-ver.rd, * testsuite/ld-riscv-elf/gp-hidden-ver.s, * testsuite/ld-riscv-elf/gp-hidden-ver.ver, * testsuite/ld-riscv-elf/gp-hidden.rd, * testsuite/ld-riscv-elf/gp-hidden.s, * testsuite/ld-riscv-elf/gp-hidden.sd: Delete. * testsuite/ld-riscv-elf/gp-test-lib.sd, * testsuite/ld-riscv-elf/gp-test.s, * testsuite/ld-riscv-elf/gp-test.sd: New. * testsuite/ld-riscv-elf/ld-riscv-elf.exp: Rewrite gp tests.
2017-12-05Address review comments for the previous seriesSimon Marchi2-2/+10
I failed at git and missed adding/lost changes on the wrong branch, the result being that I didn't incorporate fixes resulting from Yao's review comments. This patch fixes that. There are two places where we should use the unique pointer typedef, and ChangeLog entries missing. gdb/ChangeLog: * target-descriptions.c (struct tdesc_feature) <registers>: Use tdesc_reg_up typedef. (struct target_desc) <features>: Use tdesc_feature_up typedef.
2017-12-05Split tdesc_type into multiple classesSimon Marchi42-1074/+1187
This patch makes tdesc_type an abstract base class and creates three subclasses: - tdesc_type_builtin, for builtin types - tdesc_type_vector, for vector types - tdesc_type_with_fields, for struct, union, flag and enum types This allows getting rid of the union in tdesc_type and to not allow the std::vector separately. I tried to go further and create separate classes for struct, union, flag and enum, but it proved too difficult. One problem is that from the point of the of the target description code, the types tdesc_type_* are opaque (only forward-declared). Therefore, it doesn't know about inheritance relationship between those classes. This makes it impossible to make functions that accept a pointer to a base class and pass a pointer to a derived class, for example. I think this patch here is a good compromise, and if somebody wants to improve things further, the door is open. A make_gdb_type virtual pure method is added to tdesc_type, which replaces the current tdesc_gdb_type function. Calling this method on a tdesc_type returns the corresponding built gdb type. gdb/ChangeLog: * target-descriptions.c (struct tdesc_type): Use default destructor. <u>: Remove. <accept>: Remove. (struct tdesc_type_builtin): New. (struct tdesc_type_vector): New. (struct tdesc_type_with_fields): New. (tdesc_predefined_types): Change type to tdesc_type_builtin[]. (tdesc_gdb_type): Remove. (tdesc_register_type): Adjust. (tdesc_create_vector): Create tdesc_type_vector. (tdesc_create_struct): Create tdesc_type_with_fields. (tdesc_set_struct_size): Change parameter type. (tdesc_create_union): Create tdesc_type_with_fields. (tdesc_create_flags): Likewise. (tdesc_create_enum): Likewise. (tdesc_add_field): Change parameter type. (tdesc_add_typed_bitfield): Likewise. (tdesc_add_bitfield): Likewise. (tdesc_add_flag): Likewise. (tdesc_add_enum_value): Likewise. (print_c_tdesc) <visit>: Remove overload with tdesc_type parameter, add overloads for tdesc_type_builtin, tdesc_type_with_fields and tdesc_type_vector. <m_printed_type>: Remove. <m_printed_element_type, m_printed_type_with_fields>: Add. * target-descriptions.h (tdesc_create_enum): Change return type. (tdesc_add_typed_bitfield): Change parameter type. (tdesc_add_enum_value): Change parameter type. * xml-tdesc.c (struct tdesc_parsing_data) <current_type>: Change type to tdesc_type_with_fields. (tdesc_start_struct): Adjust. (tdesc_start_flags): Adjust. (tdesc_start_enum): Adjust. (tdesc_start_field): Adjust. * arch/tdesc.h (struct tdesc_type_builtin): Forward-declare. (struct tdesc_type_vector): Forward-declare. (struct tdesc_type_with_fields): Forward-declare. (tdesc_create_struct): Change return type. (tdesc_create_union): Likewise. (tdesc_create_flags): Likewise. (tdesc_add_field): Change parameter type. (tdesc_set_struct_size): Likewise. (tdesc_add_bitfield): Likewise. (tdesc_add_flag): Likewise. * features: Re-generate C files. gdb/gdbserver/ChangeLog: * tdesc.c (struct tdesc_type): Change return type. (tdesc_add_flag): Change parameter type. (tdesc_add_bitfield): Likewise. (tdesc_add_field): Likewise. (tdesc_set_struct_size): Likewise.
2017-12-05Make tdesc_arch_data::arch_regs an std::vectorSimon Marchi2-42/+54
Make tdesc_arch_data::arch_regs be an std::vector of tdesc_arch_reg objects. On particularity is that the tdesc_arch_data linked to a gdbarch is allocated on the gdbarch's obstack. To be safe, I did not change it and called placement-new on the area returned by OBSTACK_ZALLOC. gdb/ChangeLog: * target-descriptions.c (tdesc_arch_reg): Remove typedef. (struct tdesc_arch_reg): Add constructor. (DEF_VEC_O (tdesc_arch_reg)): Remove. (struct tdesc_arch_data): Initialize fields. <arch_regs>: Change type to std::vector. (target_find_description): Adjust. (tdesc_find_type): Adjust. (tdesc_data_init): Call tdesc_arch_data constructor. (tdesc_data_alloc): Allocate tdesc_arch_data with new. (tdesc_data_cleanup): Free data with delete. (tdesc_numbered_register): Adjust. (tdesc_find_arch_register): Adjust. (tdesc_use_registers): Adjust.
2017-12-05Make tdesc_type::u::u::fields an std::vectorSimon Marchi2-119/+95
This patch makes the tdesc_type::u::u::fields an std::vector of tdesc_type_field. The difficulty here is that the vector is part of a union. Because of this, I made fields a pointer to a vector, and instantiate/destroy the vector if the type is one that uses this member of the union The field tdesc_type_field::name is changed to an std::string at the same time. gdb/ChangeLog: * target-descriptions.c (tdesc_type_field): Remove typedef. (DEF_VEC_O (tdesc_type_field)): Remove. (struct tdesc_type_field): Add constructor. <name>: Change type to std::string. (struct tdesc_type) <tdesc_type>: Instantiate vector if the type kind uses it. <~tdesc_type>: Destroy vector if the type kind uses it. <u::u::fields>: Change type to std::vector. (tdesc_gdb_type): Adjust. (tdesc_add_field): Adjust. (tdesc_add_typed_bitfield): Adjust. (tdesc_add_field): Adjust. (tdesc_add_enum_value): Adjust. (class print_c_tdesc) <visit>: Adjust.
2017-12-05Make tdesc_type::name an std::stringSimon Marchi2-27/+35
This patch makes tdesc_type::name an std::string. This way, we don't need to free it manually in ~tdesc_type. I think the comment on top of name is not correct, the string is always malloc'ed. gdb/ChangeLog: * target-descriptions.c (struct tdesc_type) <name>: Change type to std::string. <~tdesc_type>: Don't manually free name. <operator==>: Adjust. (tdesc_named_type): Adjust. (tdesc_find_type): Adjust. (tdesc_gdb_type): Adjust. (class print_c_tdesc) <visit>: Adjust.
2017-12-05Make tdesc_feature::types an std::vectorSimon Marchi2-40/+34
This patch makes tdesc_feature::types an std::vector of unique_ptr of tdesc_type. This way, we don't need to manually free the objects and the vector in ~tdesc_feature. gdb/ChangeLog: * target-descriptions.c (tdesc_type_p): Remove typedef. (DEF_VEC_P (tdesc_type_p)): Remove. (struct tdesc_feature) <types>: Change type to std::vector. <~tdesc_feature>: Replace with default implementation. <accept>: Adjust. (tdesc_named_type): Adjust. (tdesc_create_vector): Adjust. (tdesc_create_struct): Adjust. (tdesc_create_union): Adjust. (tdesc_create_flags): Adjust. (tdesc_create_enum): Adjust.
2017-12-05Make tdesc_reg string fields std::stringSimon Marchi4-41/+51
Make the name, group and type fields of tdesc_reg std::strings. This way, we don't have to manually free them in ~tdesc_reg. Doing so results in a small change in the generated tdesc. Instead of passing an empty string for the group parameter of tdesc_create_reg, the two modified tdesc now pass NULL. The end result should be the same. gdb/ChangeLog: * target-descriptions.c (struct tdesc_reg) <tdesc_reg>: Change type of name_ parameter, adjust to std::string change. <name, group, type>: Change type to std::string. <~tdesc_reg>: Replace with default implementation. <operator==>: Adjust. (tdesc_find_register_early): Adjust. (tdesc_register_name): Adjust. (tdesc_register_type): Adjust. (tdesc_register_in_reggroup_p): Adjust. (class print_c_tdesc) <visit>: Adjust. (class print_c_feature) <visit>: Adjust.
2017-12-05Make tdesc_feature::registers an std::vectorSimon Marchi2-47/+35
This patch makes tdesc_feature::registers an std::vector of unique_ptr to tdesc_reg. This way, we don't have to manually free the tdesc_reg objects and the vector in the tdesc_feature destructor. gdb/ChangeLog: * target-descriptions.c (tdesc_reg_p): Remove typedef. (DEF_VEC_P (tdesc_reg_p)): Remove. (struct tdesc_feature) <registers>: Change type to std::vector. <~tdesc_feature>: Don't manually free registers. <accept>: Adjust. <operator==>: Adjust. (tdesc_has_registers): Adjust. (tdesc_find_register_early): Adjust. (tdesc_use_registers): Adjust. (tdesc_create_reg): Adjust.
2017-12-05Make tdesc_feature::name an std::stringSimon Marchi2-10/+19
... so we don't have to manually free it in ~tdesc_feature. gdb/ChangeLog: * target-descriptions.c (tdesc_feature) <name>: Change type to std::string. <~tdesc_feature>: Don't manually free name. <operator==>: Adjust. (tdesc_find_feature): Adjust. (tdesc_feature_name): Adjust. (class print_c_tdesc) <visit_pre>: Adjust. (class print_c_feature) <visit_pre>: Adjust.
2017-12-05Make target_desc::features an std::vectorSimon Marchi2-52/+33
This patch makes target_desc to be a vector of unique_ptr to tdesc_feature objects. This way, we don't have to manually free the features and the vector in the target_desc destructor. gdb/ChangeLog: * target-descriptions.c (tdesc_feature_p): Remove typedef. (DEF_VEC_P (tdesc_feature_p)): Remove. (struct target_desc) <features>: Change type to std::vector. <~target_desc>: Replace with default implementation. <accept>: Adjust. <operator==>: Adjust. (tdesc_has_registers): Adjust. (tdesc_find_feature): Adjust. (tdesc_use_registers): Adjust. (tdesc_create_feature): Adjust.
2017-12-05Make target_desc::compatible an std::vectorSimon Marchi2-30/+19
This patch changes target_desc::compatible to be a vector of bfd_arch_info *. This way, we don't need to manually free the vector in the target_desc destructor. gdb/ChangeLog: * target-descriptions.c (arch_p): Remove typedef. (DEF_VEC_P (arch_p)): Remove. (struct target_desc) <compatible>: Change type to std::vector. <~target_desc>: Don't manually free compatible. (tdesc_compatible_p): Adjust. (tdesc_add_compatible): Adjust. (class print_c_tdesc) <visit_pre>: Adjust.
2017-12-05Make target_desc::properties an std::vectorSimon Marchi2-40/+30
This patch changes target_desc::properties to be a vector of property objects. This way, we don't need to manually free the property members as well as the property objects themselves. gdb/ChangeLog: * target-descriptions.c (property_s): Remove typedef. (DEF_VEC_O (property_s)): Remove. (struct target_desc) <properties>: Make an std::vector. <~target_desc>: Don't manually free properties. (tdesc_property): Adjust. (set_tdesc_property): Adjust. (class print_c_tdesc) <visit_pre>: Adjust.
2017-12-05Redefine gdb_static_assert as static_assertSimon Marchi2-2/+6
Since we use C++11, we can use static_assert instead doing the trick that makes a negative-sized array if the expression is false. static_assert is built in the language and gives clearer error messages. To avoid modifying the usages of gdb_static_assert, redefine gdb_static_assert in terms of static_assert, passing an empty message. If we want to add an assert with a message, it's always possible to use static_assert directly. gdb/ChangeLog: * common/gdb_assert.h (gdb_static_assert): Redefine using static_assert.
2017-12-05Remove some unused variablesSimon Marchi85-224/+179
This patch removes some unused variables, found with -Wunused. I have not removed everything reported by -Wunused, because some expressions such as struct type *arg_type = check_typedef (value_type); in bfin-tdep.c could have an unexpected but important side-effect. I removed others that I considered more low-risk, such as: struct gdbarch *gdbarch = get_objfile_arch (objfile); I tested building with Python 2/Python 3/no Python, with/without expat, with/without libipt and with/without babeltrace. gdb/ChangeLog: * ada-lang.c (ada_collect_symbol_completion_matches): Remove unused variables. (ada_is_redundant_range_encoding): Likewise. * ada-varobj.c (ada_varobj_get_value_of_array_variable): Likewise. * alpha-tdep.c (alpha_software_single_step): Likewise. * arm-tdep.c (_initialize_arm_tdep): Likewise. * auto-load.c (info_auto_load_cmd): Likewise. * break-catch-syscall.c (insert_catch_syscall): Likewise. (remove_catch_syscall): Likewise. * breakpoint.c (condition_completer): Likewise. (clear_command): Likewise. (update_breakpoint_locations): Likewise. * btrace.c (btrace_disable): Likewise. (btrace_teardown): Likewise. (btrace_maint_update_pt_packets): Likewise. (maint_btrace_clear_cmd): Likewise. * cli/cli-decode.c (lookup_cmd_1): Likewise. (lookup_cmd_composition): Likewise. * cli/cli-dump.c (scan_filename): Likewise. (restore_command): Likewise. * compile/compile-loc2c.c (compute_stack_depth): Likewise. * compile/compile-object-load.c (compile_object_load): Likewise. * compile/compile-object-run.c (compile_object_run): Likewise. * compile/compile.c (compile_to_object): Likewise. * completer.c (filename_completer): Likewise. (complete_files_symbols): Likewise. (complete_expression): Likewise. * corelow.c (core_open): Likewise. * ctf.c (ctf_start): Likewise. (ctf_write_status): Likewise. (ctf_write_uploaded_tsv): Likewise. (ctf_write_definition_end): Likewise. (ctf_open_dir): Likewise. (ctf_xfer_partial): Likewise. (ctf_trace_find): Likewise. * disasm.c (gdb_pretty_print_disassembler::pretty_print_insn): Likewise. * dwarf2loc.c (allocate_piece_closure): Likewise. (indirect_pieced_value): Likewise. (dwarf2_evaluate_loc_desc_full): Likewise. * dwarf2read.c (dw2_expand_marked_cus): Likewise. (dw2_expand_symtabs_matching): Likewise. (dw2_map_symbol_filenames): Likewise. (read_and_check_comp_unit_head): Likewise. (read_cutu_die_from_dwo): Likewise. (lookup_dwo_unit): Likewise. (read_comp_units_from_section): Likewise. (dwarf2_compute_name): Likewise. (handle_DW_AT_stmt_list): Likewise. (create_cus_hash_table): Likewise. (create_dwp_v2_section): Likewise. (dwarf2_rnglists_process): Likewise. (dwarf2_ranges_process): Likewise. (dwarf2_record_block_ranges): Likewise. (is_vtable_name): Likewise. (read_formatted_entries): Likewise. (skip_form_bytes): Likewise. * elfread.c (elf_symtab_read): Likewise. * exec.c (exec_file_command): Likewise. * f-valprint.c (f_val_print): Likewise. (info_common_command_for_block): Likewise. * guile/guile.c (initialize_scheme_side): Likewise. * guile/scm-breakpoint.c (gdbscm_breakpoint_commands): Likewise. * guile/scm-cmd.c (cmdscm_completer): Likewise. (gdbscm_register_command_x): Likewise. * guile/scm-frame.c (gdbscm_frame_read_var): Likewise. * guile/scm-param.c (gdbscm_parameter_value): Likewise. * guile/scm-ports.c (file_port_magic): Likewise. * guile/scm-pretty-print.c (ppscm_search_pp_list): Likewise. (ppscm_pretty_print_one_value): Likewise. (ppscm_print_children): Likewise. * guile/scm-string.c (gdbscm_string_to_argv): Likewise. * guile/scm-symtab.c (gdbscm_sal_symtab): Likewise. * guile/scm-type.c (gdbscm_type_next_field_x): Likewise. * guile/scm-utils.c (gdbscm_parse_function_args): Likewise. * i386-tdep.c (i386_register_reggroup_p): Likewise. * infcmd.c (run_command_1): Likewise. (until_next_fsm_clean_up): Likewise. * linespec.c (linespec_complete): Likewise. (find_label_symbols): Likewise. * m2-valprint.c (m2_val_print): Likewise. * memattr.c (require_user_regions): Likewise. (lookup_mem_region): Likewise. (disable_mem_command): Likewise. (mem_delete): Likewise. * mep-tdep.c (mep_register_name): Likewise. (mep_analyze_prologue): Likewise. * mi/mi-cmd-file.c (mi_cmd_file_list_shared_libraries): Likewise. * mi/mi-interp.c (mi_on_sync_execution_done): Likewise. * mi/mi-main.c (mi_cmd_trace_frame_collected): Likewise. * microblaze-linux-tdep.c (microblaze_linux_init_abi): Likewise. * minidebug.c (lzma_open): Likewise. * minsyms.c (lookup_minimal_symbol): Likewise. * mips-linux-tdep.c (mips64_fill_fpregset): Likewise. * mips-tdep.c (mips_stub_frame_sniffer): Likewise. (mips_o64_return_value): Likewise. (mips_single_step_through_delay): Likewise. (_initialize_mips_tdep): Likewise. * nios2-tdep.c (nios2_push_dummy_call): Likewise. (nios2_software_single_step): Likewise. * parse.c (find_minsym_type_and_address): Likewise. * psymtab.c (psym_relocate): Likewise. * python/py-breakpoint.c (bppy_get_commands): Likewise. (gdbpy_breakpoint_modified): Likewise. * python/py-infevents.c (create_inferior_call_event_object): Likewise. * python/py-record-btrace.c (btpy_list_item): Likewise. * python/py-type.c (typy_str): Likewise. * python/py-value.c (valpy_call): Likewise. * python/python.c (do_start_initialization): Likewise. * record-btrace.c (record_btrace_insn_history_range): Likewise. (record_btrace_call_history_range): Likewise. (record_btrace_record_method): Likewise. (record_btrace_xfer_partial): Likewise. (btrace_get_frame_function): Likewise. * record-full.c (record_full_open): Likewise. * record.c (get_context_size): Likewise. * registry.h (DEFINE_REGISTRY): Likewise. * remote-fileio.c (remote_fileio_request): Likewise. * remote.c (remote_update_thread_list): Likewise. (remote_check_symbols): Likewise. (remote_commit_resume): Likewise. (remote_interrupt): Likewise. (remote_insert_breakpoint): Likewise. (compare_sections_command): Likewise. * rust-exp.y (super_name): Likewise. (lex_string): Likewise. (convert_ast_to_type): Likewise. (convert_ast_to_expression): Likewise. * rust-lang.c (rust_print_struct_def): Likewise. (rust_print_type): Likewise. (rust_evaluate_subexp): Likewise. * rx-tdep.c (rx_register_type): Likewise. * ser-event.c (serial_event_clear): Likewise. * serial.c (serial_open): Likewise. * spu-tdep.c (spu_overlay_new_objfile): Likewise. * symfile.c (section_is_overlay): Likewise. (overlay_unmapped_address): Likewise. (overlay_mapped_address): Likewise. (simple_overlay_update_1): Likewise. (simple_overlay_update): Likewise. * symtab.c (symbol_find_demangled_name): Likewise. (search_symbols): Likewise. * target-descriptions.c (tdesc_predefined_type): Likewise. * target.c (target_commit_resume): Likewise. * thread.c (print_selected_thread_frame): Likewise. * top.c (new_ui_command): Likewise. (gdb_readline_no_editing): Likewise. * tracefile-tfile.c (tfile_open): Likewise. * tracepoint.c (create_tsv_from_upload): Likewise. * utils.c (quit): Likewise. (defaulted_query): Likewise. * valarith.c (value_concat): Likewise. * xml-syscall.c (xml_list_syscalls_by_group): Likewise. * xml-tdesc.c (target_fetch_description_xml): Likewise. * xtensa-tdep.c (xtensa_pseudo_register_read): Likewise. (xtensa_pseudo_register_write): Likewise. gdb/gdbserver/ChangeLog: * regcache.c (registers_to_string): Remove unused variable.
2017-12-04Riscv shared libraries should not export __global_pointer$.Jim Wilson13-2/+106
ld/ * emulparams/elf32lriscv-defs.sh (SDATA_START_SYMBOLS): Mark __global_pointer$ as HIDDEN. * testsuite/ld-riscv-elf/gp-hidden-64.rd: New. * testsuite/ld-riscv-elf/gp-hidden-lib.rd: New. * testsuite/ld-riscv-elf/gp-hidden-lib.s: New. * testsuite/ld-riscv-elf/gp-hidden-ver-64.rd: New. * testsuite/ld-riscv-elf/gp-hidden-ver.rd: New. * testsuite/ld-riscv-elf/gp-hidden-ver.s: New. * testsuite/ld-riscv-elf/gp-hidder-ver.ver: New. * testsuite/ld-riscv-elf/gp-hidden.rd: New. * testsuite/ld-riscv-elf/gp-hidden.s: New. * testsuite/ld-riscv-elf/gp-hidden.sd: New. * testsuite/ld-riscv-elf/ld-riscv-elf.exp: Change riscv to riscv*. Run the new tests with run_ld_link_tests.
2017-12-05Automatic date update in version.inGDB Administrator1-1/+1
2017-12-04Extend gdb.core/coredump-filter.exp to test dump-excluded-mappings.Sergio Lopez1-12/+34
gdb/testsuite/ChangeLog: 2017-11-30 Sergio Lopez <slp@redhat.com> * gdb.core/coredump-filter.exp: Extend test to verify the functionality of the dump-excluded-mappings command.
2017-12-04Document the new "-a" command line option for gcoreSergio Lopez2-1/+13
gdb/ChangeLog: 2017-11-29 Sergio Lopez <slp@redhat.com> * NEWS (Changes since GDB 8.0): Announce new "-a" command line option for gcore. gdb/doc/ChangeLog: 2017-11-29 Sergio Lopez <slp@redhat.com> * gdb.texinfo (gcore man): Document new "-a" command line option.
2017-12-04Implement "-a" command line option for gcoreSergio Lopez1-17/+30
With the new "-a" command line option, the user may request gcore to actually dump all present memory mappings. The actual effect of this argument is OS dependent. On GNU/Linux, it will disable use-coredump-filter and enable dump-excluded-mappings. gdb/ChangeLog: 2017-11-29 Sergio Lopez <slp@redhat.com> * gcore.in: Add "-a" command line option for instructing gdb to dump all memory mappings (OS dependent).
2017-12-04Document new {set,show} dump-excluded-mappings commands.Sergio Lopez2-1/+18
gdb/ChangeLog: 2017-11-29 Sergio Lopez <slp@redhat.com> * NEWS (Changes since GDB 8.0): Announce {set,show} dump_excluded_mappings commands. gdb/doc/ChangeLog: 2017-11-29 Sergio Lopez <slp@redhat.com> * gdb.texinfo (gcore): Mention new {set,show} dump-excluded-mappings commands. (set dump-excluded-mappings): Document new command.
2017-12-04Implement 'set dump-excluded-mappings' commandSergio Lopez1-1/+29
Commit df8411da087dc05481926f4c4a82deabc5bc3859 implemented support for checking /proc/PID/coredump_filter, and also changed gcore behavior to unconditionally honor the VM_DONTDUMP flag, preventing sections marked as such for being dumped into the core file. This patch implements the 'set dump-excluded-mappings' command for instructing gdb to ignore the VM_DONTDUMP flag. Combined with 'set use-coredump-filter', this allows the user to restore the old behavior, dumping all sections (except the ones marked as IO) unconditionally. gdb/Changelog: 2017-11-29 Sergio Lopez <slp@redhat.com> * linux-tdep.c (dump_excluded_mappings): New variable. (dump_mapping_p): Use dump_excluded_mappings variable. (_initialize_linux_tdep): New command 'set dump_excluded_mappings'.
2017-12-04Update manual for Rust changeTom Tromey4-3/+11
I realized today that a recent change to the Rust support required an update to the manual; and so I updated NEWS as well. 2017-12-04 Tom Tromey <tom@tromey.com> * NEWS: Mention Rust trait object inspection. 2017-12-04 Tom Tromey <tom@tromey.com> * gdb.texinfo (Rust): Update trait object status
2017-12-04Fix displaced-stepping RIP-relative VEX-encoded instructions (AVX) (PR ↵Pedro Alves5-9/+274
gdb/22499) PR gdb/22499 is about a latent bug exposed by the switch to "maint set target-non-stop on" by default on x86-64 GNU/Linux, a while ago. With that on, GDB is also preferring to use displaced-stepping by default. The testcase in the bug is failing because GDB ends up incorrectly displaced-stepping over a RIP-relative VEX-encoded instruction, like this: 0x00000000004007f5 <+15>: c5 fb 10 05 8b 01 00 00 vmovsd 0x18b(%rip),%xmm0 # 0x400988 While RIP-relative instructions need adjustment when relocated to the scratch pad, GDB ends up just copying VEX-encoded instructions to the scratch pad unmodified, with the end result that the inferior ends up executing an instruction that fetches/writes memory from the wrong address... This patch teaches GDB about the VEX-encoding prefixes, fixing the problem, and adds a testcase that fails without the GDB fix. I think we may need a similar treatment for EVEX-encoded instructions, but I didn't address that simply because I couldn't find any EVEX-encoded RIP-relative instruction in the gas testsuite. In any case, this commit is forward progress as-is already. gdb/ChangeLog: 2017-12-04 Pedro Alves <palves@redhat.com> PR gdb/22499 * amd64-tdep.c (amd64_insn::rex_offset): Rename to... (amd64_insn::enc_prefix_offset): ... this, and tweak comment. (vex2_prefix_p, vex3_prefix_p): New functions. (amd64_get_insn_details): Adjust to rename. Also skip VEX2 and VEX3 prefixes. (fixup_riprel): Set VEX3.!B. gdb/testsuite/ChangeLog: 2017-12-04 Pedro Alves <palves@redhat.com> PR gdb/22499 * gdb.arch/amd64-disp-step-avx.S: New file. * gdb.arch/amd64-disp-step-avx.exp: New file.