aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-03-20Fix spurious FAILs with examine-backward.expAndreas Arnez2-0/+14
The test case examine-backward.exp issues the command "x/-s" after the end of the first string in TestStrings, but without making sure that this string is preceded by a string terminator. Thus GDB may spuriously print some random characters from before that string, and then the test fails. This patch assures that TestStrings is preceded by a string terminator. gdb/testsuite/ChangeLog: * gdb.base/examine-backward.c (Barrier): New character array constant, to ensure that TestStrings is preceded by a string terminator.
2017-03-20readelf: Don't error on .debug files with NOBITS .dynamic section.Mark Wielaard2-6/+15
The fix for PR binutils/17512 added a check for the dynamic segment being inside the actual ELF file. If not an error message would be produced: readelf: Error: the dynamic segment offset + size exceeds the size of the file Unfortunately for separate debuginfo files it is common for the dynamic segment not being inside the file because the .dynamic section is NOBITS. Since the check is done unconditionally in process_program_headers and process_program_headers is always called (to setup dynamic_addr in case it is needed). The error is produced on any operations done on any .debug file (even if no program headers or the dynamic segment is used). If there are section headers then a cross check is done to see if the .dynamic section is NOBITS in which case dynamic_addr is set to zero without a warning or error (which is then checked first before any operation on the dynamic segement is done). Move the check for the dynamic segment being inside the actual ELF file after the cross check with the section headers to suppress the error for .debug files. binutils/ChangeLog: * readelf.c (process_program_headers): Move dynamic_addr check after .dynamic section cross check.
2017-03-20Update descriptions of the .2byte, .4byte and .8byte directives.Nick Clifton2-14/+28
* doc/as.texinfo (2byte): Note that if no expressions are present the directive does nothing. Emphasize that the output is unaligned, and that this can have an effect on the relocations generated. (4byte): Simplify description. Refer back to the 2byte description. (8byte): Likewise.
2017-03-20s390: Fix displaced-stepping certain relative branch insnsAndreas Arnez2-51/+11
On s390x targets GDB can not handle displaced stepping correctly for some relative branch instructions, such as cij (compare immediate and branch relative). When setting a breakpoint on such an instruction and single-stepping over it, the branch is never taken. This is because the check in s390_displaced_step_fixup for relative branch instructions is incomplete. Instead of completing the list of relative branch instructions to check against, this patch just treats relative branches and non-branching instructions in the same way and adjusts the PC with the negated displacement in both cases. gdb/ChangeLog: * s390-linux-tdep.c (is_rsi, is_rie): Remove functions. (s390_displaced_step_fixup): Cover relative branches with the default fixup handling. This fixes lack of support for some relative branch instructions.
2017-03-20Update the openrisc previous program counter (ppc) when running code in the ↵Stafford Horne2-0/+9
cgen based simulator. * or1kcommon.cpu: Add pc set semantics to also update ppc.
2017-03-20[arm] Document missing -mfpu entries.Richard Earnshaw3-4/+13
Nick pointed out that I hadn't documented the new -mfpu option neon-vfpv3 and mentioned that some others were missing. Having looked through the list only one (neon-fp16) really should be documented; the other two entries in the real table should not be documented as they are aliases kept for legacy compatibility reasons. This patch adds the missing entries and notes in the main table that the other two entries should not be documented. I've also fixed a small spelling error in the accompanying text. * config/tc-arm.c (arm_fpus): Note entires that should not be documented. * doc/c-arm.texi (-mfpu): Add missing FPU entries for neon-vfpv3 and neon-fp16. Fix spelling error.
2017-03-20[arm] Add neon-vfp3 as an alias for neon to -mfpu.Richard Earnshaw2-0/+5
GCC recently added neon-vfpv3 as an alias for neon in -mfpu. This patch adds a similar alias in GAS. * config/tc-arm.c (arm_fpus): Add neon-vfpv3 as an alias for neon.
2017-03-20Automatic date update in version.inGDB Administrator1-1/+1
2017-03-20PR 21266, unstable qsort in bfd/elf64-ppc.cAlan Modra2-1/+6
PR 21266 * elf64-ppc.c (compare_symbols): Stabilize sort.
2017-03-19Automatic date update in version.inGDB Administrator1-1/+1
2017-03-18Automatic date update in version.inGDB Administrator1-1/+1
2017-03-18DT_TEXTREL vs IFUNCAlan Modra3-22/+109
If you should somehow link non-pic objects into a PIE or shared library, resulting in an object with DT_TEXTREL (text relocations) set, and your executable or shared library also contains GNU indirect functions, then you're in trouble. To apply dynamic relocations ld.so will make the text segment writable. On most systems this will make the text segment non-executable, which will then result in a segfault when ld.so tries to run ifunc resolvers when applying relocations against ifuncs. This patch teaches PowerPC ld to detect the situation, and warn. * elf64-ppc.c (struct ppc_link_hash_table): Add local_ifunc_resolver and maybe_local_ifunc_resolver. (ppc_build_one_stub): Set flags on emitting dynamic relocation to ifunc. (ppc64_elf_relocate_section): Likewise. (ppc64_elf_finish_dynamic_symbol): Likewise. (ppc64_elf_finish_dynamic_sections): Error on DT_TEXTREL with local dynamic relocs to ifuncs. * elf32-ppc.c (struct ppc_elf_link_hash_table): Add local_ifunc_resolver and maybe_local_ifunc_resolver. (ppc_elf_relocate_section): Set flag on emitting dynamic relocation to ifuncs. (ppc_elf_finish_dynamic_symbol): Likewise. (ppc_elf_finish_dynamic_sections): Error on DT_TEXTREL with local dynamic relocs to ifuncs.
2017-03-17i386-gnu-nat: Use ptid from regcache instead of inferior_ptidSimon Marchi2-6/+11
gdb/ChangeLog: * i386-gnu-nat.c (gnu_fetch_registers, gnu_store_registers): Use ptid from regcache.
2017-03-17i386-darwin-nat: Use ptid from regcache instead of inferior_ptidSimon Marchi2-2/+7
gdb/ChangeLog: * i386-darwin-nat.c (i386_darwin_fetch_inferior_registers, i386_darwin_store_inferior_registers): Use ptid from regcache.
2017-03-17i386-bsd-nat: Use ptid from regcache instead of inferior_ptidSimon Marchi2-21/+21
gdb/ChangeLog: * i386-bsd-nat.c (i386bsd_fetch_inferior_registers, i386bsd_store_inferior_registers): Use ptid from regcache.
2017-03-17hppa-obsd-nat: Use ptid from regcache instead of inferior_ptidSimon Marchi2-12/+13
gdb/ChangeLog: * hppa-obsd-nat.c (hppaobsd_fetch_registers, hppaobsd_store_registers): Use ptid from regcache.
2017-03-17hppa-nbsd-nat: Use ptid from regcache instead of inferior_ptidSimon Marchi2-12/+15
gdb/ChangeLog: * hppa-nbsd-nat.c (hppanbsd_fetch_registers, hppanbsd_store_registers): Use ptid from regcache.
2017-03-17hppa-linux-nat: Use ptid from regcache instead of inferior_ptidSimon Marchi2-10/+10
gdb/ChangeLog: * hppa-linux-nat.c (fetch_register, store_register): Use ptid from regcache. Use get_ptrace_pid.
2017-03-17corelow: Use ptid from regcache instead of inferior_ptidSimon Marchi2-5/+11
gdb/ChangeLog: * corelow.c (get_core_register_section): Use ptid from regcache, update doc.
2017-03-17bsd-uthread: Use ptid from regcache instead of inferior_ptidSimon Marchi2-2/+24
This is one of the rare to_fetch/store_registers implementations that will still rely (for now) on inferior_ptid (because of the memory read/write operations). We therefore have to add a save/restore of inferior_ptid. We'll be able to remove it when we make the memory operations accept the ptid as a parameter. gdb/ChangeLog: * bsd-uthread.c (bsd_uthread_fetch_registers, bsd_uthread_store_registers): Use ptid from regcache, set and restore inferior_ptid.
2017-03-17arm-nbsd-nat: Use ptid from regcache instead of inferior_ptidSimon Marchi2-10/+16
gdb/ChangeLog: * arm-nbsd-nat.c (fetch_register, fetch_regs, fetch_fp_register, fetch_fp_regs, store_register, store_regs, store_fp_register, store_fp_regs): Use ptid from regcache.
2017-03-17arm-linux-nat.c: Use ptid from regcache instead of inferior_ptidSimon Marchi2-8/+14
gdb/ChangeLog: * arm-linux-nat.c (fetch_fpregs, store_fpregs, fetch_regs, store_regs, fetch_wmmx_regs, store_wmmx_regs, fetch_vfp_regs, store_vfp_regs): Use ptid from regcache.
2017-03-17Fix displaying the value associated a GNU BUILD note that uses an ascii name.Nick Clifton2-1/+6
* readelf.c (print_gnu_build_attribute_name): Fix off by one error printing the value for a build note with an ascii name.
2017-03-17PR remote/21188: Fix remote serial timeoutPedro Alves4-160/+25
As Gareth McMullin <gareth@blacksphere.co.nz> reports at <https://sourceware.org/ml/gdb-patches/2017-02/msg00560.html>, the timeout mechanism in ser-unix.c was broken by commit 048094acc ("target remote: Don't rely on immediate_quit (introduce quit handlers)"). Instead of applying a local fix, and since we now finally always use interrupt_select [1], let's get rid of hardwire_readchar entirely, and use ser_base_readchar instead, which has similar timeout handling, except for the bug. Smoke tested with: $ socat -d -d pty,raw,echo=0 pty,raw,echo=0 2017/03/14 14:08:13 socat[4994] N PTY is /dev/pts/14 2017/03/14 14:08:13 socat[4994] N PTY is /dev/pts/15 2017/03/14 14:08:13 socat[4994] N starting data transfer loop with FDs [3,3] and [5,5] $ gdbserver /dev/pts/14 PROG $ gdb PROG -ex "tar rem /dev/pts/15" and then a few continues/ctrl-c's, plus killing gdbserver and socat. [1] - See FIXME comments being removed. gdb/ChangeLog: 2017-03-17 Pedro Alves <palves@redhat.com> PR remote/21188 * ser-base.c (ser_base_wait_for): Add comment. (do_ser_base_readchar): Improve comment based on the ser-unix.c's version. * ser-unix.c (hardwire_raw): Remove reference to scb->current_timeout. (wait_for, do_hardwire_readchar, hardwire_readchar): Delete. (hardwire_ops): Install ser_base_readchar instead of hardwire_readchar. * serial.h (struct serial) <current_timeout, timeout_remaining>: Remove fields.
2017-03-17Fix PR gdb/19637: bound_registers.py: Add support for Python 3Jonah Graham2-0/+11
Fix this the same way gdb/python/lib/gdb/printing.py handles it. gdb/Changelog: 2017-03-17 Jonah Graham <jonah@kichwacoders.com> PR gdb/19637 * python/lib/gdb/printer/bound_registers.py: Add support for Python 3.
2017-03-17E6500 spr mnemonicsAlan Modra2-8/+15
PR 21248 * ppc-opc.c (powerpc_opcodes): Enable mfivor32, mfivor33, mtivor32, and mtivor33 for e6500. Move mfibatl and mfibatu after those spr mnemonics they alias. Similarly for mtibatl, mtibatu.
2017-03-17ld sec64k test fixAlan Modra2-2/+8
* testsuite/ld-elf/sec64k.exp: Don't run on h8300 and ip2k.
2017-03-17Automatic date update in version.inGDB Administrator1-1/+1
2017-03-16Big-endian targets: Don't ignore offset into DW_OP_stack_valueAndreas Arnez7-46/+131
Recently I fixed a bug that caused a DW_OP_implicit_pointer with non-zero offset into a DW_OP_implicit_value to be handled incorrectly on big-endian targets. GDB ignored the offset and copied the wrong bytes: https://sourceware.org/ml/gdb-patches/2017-01/msg00251.html But there is still a similar issue when a DW_OP_implicit_pointer points into a DW_OP_stack_value instead; and again, the offset is ignored. There is an important difference, though: While implicit values are treated like blocks of data and anchored at the lowest-addressed byte, stack values traditionally contain integer numbers and are anchored at the *least significant* byte. Also, stack values do not come in varying sizes, but are cut down appropriately when used. Thus, on big-endian targets the scenario looks like this (higher addresses shown right): |<- - - - - Stack value - - - - - - ->| | | |<- original object ->| | | offset ->|####| ^^^^ de-referenced implicit pointer (Note how the original object's size influences the position of the de-referenced implicit pointer within the stack value. This is not the case for little-endian targets, where the original object starts at offset zero within the stack value.) This patch implements the logic indicated in the above diagram and adds an appropriate test case. A new function dwarf2_fetch_die_type_sect_off is added; it is used for retrieving the original object's type, so its size can be determined. That type is passed to dwarf2_evaluate_loc_desc_full via a new parameter. gdb/ChangeLog: * dwarf2loc.c (indirect_synthetic_pointer): Get data type of pointed-to DIE and pass it to dwarf2_evaluate_loc_desc_full. (dwarf2_evaluate_loc_desc_full): New parameter subobj_type; rename byte_offset to subobj_byte_offset. Fix the handling of DWARF_VALUE_STACK on big-endian targets when coming via an implicit pointer. (dwarf2_evaluate_loc_desc): Adjust call to dwarf2_evaluate_loc_desc_full. * dwarf2loc.h (dwarf2_fetch_die_type_sect_off): New declaration. * dwarf2read.c (dwarf2_fetch_die_type_sect_off): New function. gdb/testsuite/ChangeLog: * lib/dwarf.exp: Add support for DW_OP_implicit_pointer. * gdb.dwarf2/nonvar-access.exp: Add test for stack value location and implicit pointer into such a location.
2017-03-16gdb.python/py-lazy-string (pointer): Really add new typedef.Doug Evans2-0/+6
Somehow got dropped in earlier commit. gdb/testsuite/ChangeLog: * gdb.python/py-lazy-string (pointer): Really add new typedef.
2017-03-16Remove collision markers from earlier commitDoug Evans1-5/+3
2017-03-16Add support for a GNU BUILD note type to record the enum size.Nick Clifton4-0/+16
include * elf/common.h (GNU_BUILD_ATTRIBUTE_SHORT_ENUM): New GNU BUILD note type. binutils * readelf.c (print_gnu_build_attribute_name): Add support for GNU_BUILD_ATTRIBUTE_SHORT_ENUM.
2017-03-16Support CBNZ, CBZ, REV, REV16 and REVSH in arm process recordYao Qi2-2/+7
This patch adds the support for these instructions in arm process record. gdb: 2017-03-16 Yao Qi <yao.qi@linaro.org> * arm-tdep.c (thumb_record_misc): Decode CBNZ, CBZ, REV16, and REVSH instructions.
2017-03-16Fix arm process record for some instructionsYao Qi2-77/+241
I look at some fails in gdb.reverse/solib-precsave.exp in -mthumb, they are caused by some bugs on decoding these three instructions, uxtb, ldr and mrc. This patch adds unit tests against these three instructions, and fix these bugs by re-organizing the code to match the table in ARM ARM. gdb: 2017-03-16 Yao Qi <yao.qi@linaro.org> * arm-tdep.c [GDB_SELF_TEST]: include "selftests.h". (arm_record_test): Declare. (_initialize_arm_tdep) [GDB_SELF_TEST]: call register_self_test. (thumb_record_ld_st_reg_offset): Rewrite the opcode matching to align with the manual. (thumb_record_misc): Adjust the code order to align with the manual. (thumb2_record_decode_insn_handler): Fix instruction matching. (instruction_reader_thumb): New class. (arm_record_test): New function.
2017-03-16Add instruction_reader to arm process recordYao Qi2-9/+44
This patch adds an abstract class abstract_memory_reader a and pass it to the code reading instructions in arm process record, rather than using target_read_memory to read from real target. This paves the way for adding more unit tests to arm process record. gdb: 2017-03-16 Yao Qi <yao.qi@linaro.org> * arm-tdep.c (abstract_memory_reader): New class. (instruction_reader): New class. (extract_arm_insn): Add argument 'reader'. Callers updated. (decode_insn): Likewise.
2017-03-16Copy lazy string handling fixes from Python.Doug Evans8-74/+278
This patch keeps the Scheme side of lazy string handling in sync with the python size, bringing over fixes for PRs python/17728, python/18439, python/18779. gdb/ChangeLog: * guile/scm-lazy-string.c (lazy_string_smob): Clarify use of LENGTH member. Change type of TYPE member to SCM. All uses updated. (lsscm_make_lazy_string_smob): Add assert. (lsscm_make_lazy_string): Flag bad length values. (lsscm_elt_type): New function. (gdbscm_lazy_string_to_value): Rewrite to use lsscm_safe_lazy_string_to_value. (lsscm_safe_lazy_string_to_value): Fix handling of TYPE_CODE_PTR. * guile/scm-value.c (gdbscm_value_to_lazy_string): Flag bad length values. Fix TYPE_CODE_PTR. Handle TYPE_CODE_ARRAY. Handle typedefs in incoming type. * guile/guile-internal.h (tyscm_scm_to_type): Declare. * guile/scm-type.c (tyscm_scm_to_type): New function. gdb/testsuite/ChangeLog: * gdb.guile/scm-value.c (main) Delete locals sptr, sn. * gdb.guile/scm-lazy-string.c: New file. * gdb.guile/scm-value.exp: Move lazy string tests to ... * gdb.guile/scm-lazy-string.exp: ... here, new file. Add more tests for pointer, array, typedef lazy strings.
2017-03-16Fix various python lazy string bugs.Doug Evans8-51/+240
gdb/ChangeLog: PR python/17728, python/18439, python/18779 * python/py-lazy-string.c (lazy_string_object): Clarify use of LENGTH member. Change type of TYPE member to PyObject *. All uses updated. (stpy_convert_to_value): Fix handling of TYPE_CODE_PTR. (gdbpy_create_lazy_string_object): Flag bad length values. Handle TYPE_CODE_ARRAY with possibly different user-provided length. Handle typedefs in incoming type. (stpy_lazy_string_elt_type): New function. (gdbpy_extract_lazy_string): Call it. * python/py-value.c (valpy_lazy_string): Flag bad length values. Fix handling of TYPE_CODE_PTR. Handle TYPE_CODE_ARRAY. Handle typedefs in incoming type. gdb/testsuite/ChangeLog: PR python/17728, python/18439, python/18779 * gdb.python/py-value.c (main) Delete locals sptr, sn. * gdb.python/py-lazy-string.c (pointer): New typedef. (main): New locals ptr, array, typedef_ptr. * gdb.python/py-value.exp: Move lazy string tests to ... * gdb.python/py-lazy-string.exp: ... here. Add more tests for pointer, array, typedef lazy strings.
2017-03-16New function tyscm_scm_to_type.Doug Evans3-0/+20
gdb/ChangeLog: * guile/guile-internal.h (tyscm_scm_to_type): Declare. * guile/scm-type.c (tyscm_scm_to_type): New function.
2017-03-16Lazy strings can be made from arrays too.Doug Evans3-2/+7
gdb/doc/ChangeLog: * guile.texi (Lazy Strings In Guile): Mention arrays. * python.texi (Lazy Strings In Python): Ditto.
2017-03-16[Patch] Fix variable type glitch in inf-ptrace.cJiong Wang2-1/+6
gdb/ * inf-ptrace.c (inf_ptrace_peek_poke): Change the type to "ULONGEST" for "skip".
2017-03-16Fix expect for gdb.cp/m-static.expThomas Preud'homme2-2/+7
The expectation in gdb.cp/m-static.exp for the ptype of single_constructor is to get in the result of destructor with the following prototype: ~single_constructor(int). Yet, m-static.cc declares the destructor as ~single_constructor(). This commit fixes the expectation. 2017-03-16 Thomas Preud'homme <thomas.preudhomme@arm.com> gdb/testsuite/ * gdb.cp/m-static.exp: Fix expectation for prototype of test5.single_constructor and single_constructor::single_constructor.
2017-03-16gas/arc: Limit special handling of t/nt flag to ARCv2Rinat Zelig2-5/+18
In a later commit I'll be adding a new version of the ".nt" flag for an ARC700 extension (NPS400) which does not require this same special handling. In this commit I have restricted the special flag handling to only apply if we are assembling for ARCv2. This is a restructuring commit, and there should be no user visible changes after this commit. gas/ChangeLog: * config/tc-arc.c (assemble_insn): Only handle ".t" and ".nt" specially for ARCv2.
2017-03-16Automatic date update in version.inGDB Administrator1-1/+1
2017-03-15Mips: Fix TLS LDM GOT entry.Vladimir Radosavljevic2-7/+16
gold/ * mips.cc (Mips_got_entry::hash()): Shift addend to reduce possibility of collisions. (Mips_got_entry::equals): Fix case for GOT_TLS_LDM entries.
2017-03-15Mips: Omit empty objects for merging processor-specific data.Vladimir Radosavljevic2-40/+69
gold/ * mips.cc (Mips_relobj::merge_processor_specific_data_): New data member. (Mips_relobj::merge_processor_specific_data): New method. (Mips_relobj::do_read_symbols): Set merge_processor_specific_data_ to false, only if the input file is a binary or if object has no contents except the section name string table and an empty symbol table with the undefined symbol. (Target_mips::do_finalize_sections): Refactor. Skip empty object files for merging processor-specific data.
2017-03-15Mips: Add support for resolving multiple consecutive relocations.Vladimir Radosavljevic2-100/+171
gold/ * mips.cc (Target_mips::Relocate::calculated_value_): New data member. (Target_mips::Relocate::calculate_only_): Likewise. (Target_mips::Relocate::relocate): Handle multiple consecutive relocations with the same offset.
2017-03-15Remove redundant checks for relocatable link (MIPS).Vladimir Radosavljevic2-24/+25
gold/ * mips.cc (Target_mips::Relocate::relocate): Remove redundant checks for relocatable link. (Mips_relocate_functions::reljalr): Likewise.
2017-03-15Add support for .MIPS.options section.Vladimir Radosavljevic2-0/+83
gold/ * mips.cc (class Mips_output_section_options): New class. (Target_mips::do_make_output_section): New method.
2017-03-15Improve relocation overflow errors on MIPS.Vladimir Radosavljevic2-12/+29
gold/ * mips.cc (Mips_relocate_functions::rel26): Don't print relocation overflow error message. (Target_mips::relocate_special_relocatable): Improve relocation overflow error message. (Target_mips::Relocate::relocate): Likewise.
2017-03-15Correct the definition of _gp and _GLOBAL_OFFSET_TABLE_ symbols for MIPS.Vladimir Radosavljevic2-55/+35
gold/ * mips.cc (symbol_refs_local): Return false if a symbol is from a dynamic object. (Target_mips::got_section): Make _GLOBAL_OFFSET_TABLE_ STV_HIDDEN. (Target_mips::set_gp): Refactor. Make _gp STT_NOTYPE and STB_LOCAL. (Target_mips::do_finalize_sections): Set _gp after all the checks for creating .got are done. (Target_mips::Scan::global): Remove unused code.