aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2015-12-07Support Z0 packet in AArch64 multi-arch debuggingYao Qi8-181/+243
In commit 6085d6f6, Z0 packet is disabled in aarch64 GDBserver if the inferior is 32-bit or there may be multiple inferiors, because Z0 packet isn't supported for arm then. Recently, Z0 packet is supported in arm target, so we don't have such limitation in aarch64 GDBserver, that is to say, aarch64 GDBserver can use Z0 packet in multi-arch/multi-inferior debugging when the inferior's arch is arm. Part of this patch is to revert 6085d6f6, and the rest of the patch is to move some breakpoint related arm_* functions into linux-aarch32-low.c in order to share them between arm and aarch64. This patch is regression tested on aarch64-linux for debugging both aarch64 programs and arm programs respectively. gdb/gdbserver: 2015-12-07 Yao Qi <yao.qi@linaro.org> * configure.srv: Append arm.o to srv_tgtobj for aarch64*-*-linux* target. * linux-aarch32-low.c (arm_abi_breakpoint): New macro. Moved from linux-arm-low.c. (arm_eabi_breakpoint, arm_breakpoint): Likewise. (arm_breakpoint_len, thumb_breakpoint): Likewise. (thumb_breakpoint_len, thumb2_breakpoint): Likewise. (thumb2_breakpoint_len): Likewise. (arm_is_thumb_mode, arm_breakpoint_at): Likewise. (arm_breakpoint_kinds): Likewise. (arm_breakpoint_kind_from_pc): Likewise. (arm_sw_breakpoint_from_kind): Likewise. (arm_breakpoint_kind_from_current_state): Likewise. * linux-aarch32-low.h (arm_breakpoint_kind_from_pc): Declare. (arm_sw_breakpoint_from_kind): Declare. (arm_breakpoint_kind_from_current_state): Declare. (arm_breakpoint_at): Declare. * linux-aarch64-low.c (aarch64_sw_breakpoint_from_kind): Call arm_sw_breakpoint_from_kind if process is 32-bit. (aarch64_breakpoint_kind_from_pc): New function. (aarch64_breakpoint_kind_from_current_state): New function. (the_low_target): Initialize fields breakpoint_kind_from_pc and breakpoint_kind_from_current_state. * linux-arm-low.c (arm_breakpoint_kinds): Move to linux-aarch32-low.c. (arm_abi_breakpoint, arm_eabi_breakpoint): Likewise. (arm_breakpoint, arm_breakpoint_len): Likewise. (thumb_breakpoint, thumb_breakpoint_len): Likewise. (thumb2_breakpoint, thumb2_breakpoint_len): Likewise. (arm_is_thumb_mode): Likewise. (arm_breakpoint_at): Likewise. (arm_breakpoint_kind_from_pc): Likewise. (arm_sw_breakpoint_from_kind): Likewise. (arm_breakpoint_kind_from_current_state): Likewise. Revert: 2015-08-04 Yao Qi <yao.qi@linaro.org> * linux-aarch64-low.c (aarch64_supports_z_point_type): Return 0 for Z_PACKET_SW_BP if it may be used in multi-arch debugging. * server.c (extended_protocol): Remove "static". * server.h (extended_protocol): Declare it.
2015-12-07oops - accidentally omittde from previous delta.Nick Clifton1-0/+7
2015-12-07Fix relaxation in RX linker when --no-keep-memory is specified.Nick Clifton1-26/+16
* elf32-rx.c (elf32_rx_relax_delete_bytes): Add extra parameter - the start of the relocs for the section. Delete code to load in the relocs. (elf32_rx_relax_section): Do not free the loaded relocs.
2015-12-07Enhance the menu to select function overloads with signaturesPierre-Marie de Rodat5-23/+212
So far, trying to evaluate an expression involving a function call for which GDB could find multiple function candidates outputs a menu so that the user can select the one to run. For instance, with the two following functions: type New_Integer is new Integer; function F (I : Integer) return Boolean; function F (I : New_Integer) return Boolean; Then we get the following GDB session: (gdb) print f(1) Multiple matches for f [0] cancel [1] foo.f at foo.adb:23 [2] foo.f at foo.adb.28 > While the source location information is sufficient in order to determine which one to select, one has to look for them in source files, which is not convenient. This commit tunes this menu in order to also include the list of formal and return types (if any) in each entry. The above then becomes: (gdb) print f(1) Multiple matches for f [0] cancel [1] foo.f (integer) return boolean at foo.adb:23 [2] foo.f (foo.new_integer) return boolean at foo.adb.28 > Since this output is more verbose than previously, this change also introduces an option (set/show ada print-signatures) to get the original output. gdb/ChangeLog: * ada-lang.c (print_signatures): New. (ada_print_symbol_signature): New. (user_select_syms): Add signatures to the output of candidate symbols using ada_print_symbol_signature. (_initialize_ada_language): Add a "set/show ada print-signatures" boolean option. gdb/testsuite/ChangeLog: * gdb.ada/fun_overload_menu.exp: New testcase. * gdb.ada/fun_overload_menu/foo.adb: New testcase. Tested on x86_64-linux, no regression.
2015-12-07Add myself as a write-after-approval GDB maintainerAndreas Arnez2-0/+5
gdb/ChangeLog: * MAINTAINERS (Write After Approval): Add Andreas Arnez.
2015-12-07Add support for MSP430 F5 hardware multiply.Nick Clifton2-10/+59
* msp430-sim.c (sim_open): Check for needed memory at address 0x500 not 0x200. (get_op): Add support for F5 hardware multiply addresses. (put_op): Likewise.
2015-12-07PowerPC ifunc with local symbolsAlan Modra3-123/+131
This fixes some cases where the linker would incorrectly error on plt relocs to local ifunc symbols. I've also tidied plt and ifunc handling for ppc64, where check_relocs was allowing for the possibility of plt calls via addr14/addr24 relocs but relocate_section was not. * elf32-ppc.c (ppc_elf_check_relocs): Don't error on local ifunc plt call. Wrap long lines. (ppc_elf_relocate_section): Wrap long lines. * elf64-ppc.c (ppc64_elf_check_relocs): Don't error on local ifunc plt calls. Move __tls_get_addr checks later. Don't create plt for addr14/addr24 relocs. (ppc64_elf_gc_sweep_hook): Adjust to suit check_relocs changes. (ppc64_elf_relocate_section): Correct local ifunc handling for PLT64, PLT32 and PLT16 relocs.
2015-12-07PR19323 memory allocation greater than 4GAlan Modra2-1/+15
On 32-bit targets, memory requested for program/section headers on a fuzzed binary can wrap to 0. A bfd_alloc of zero bytes actually returns a one byte allocation rather than a NULL pointer. This then leads to buffer overflows. Making this check unconditional triggers an extremely annoying gcc-5 warning. PR19323 * elfcode.h (elf_object_p): Check for ridiculous e_shnum and e_phnum values.
2015-12-07[GOLD] R_PPC64_ENTRY supportAlan Modra4-0/+58
elfcpp/ * powerpc.h (R_PPC64_ENTRY): Define. gold/ * powerpc.cc (add_2_2_12, ld_2_12, lis_2): Define. (Target_powerpc::Scan::local, global): Handle R_PPC64_ENTRY. (Target_powerpc::Relocate::relocate): Edit code at R_PPC64_ENTRY.
2015-12-07R_PPC64_ENTRYAlan Modra7-4/+98
Add a new relocation that marks large-model entry code, for edit back to medium-model. include/elf/ * ppc64.h (R_PPC64_ENTRY): Define. bfd/ * reloc.c (BFD_RELOC_PPC64_ENTRY): New. * elf64-ppc.c (reloc_howto_type ppc64_elf_howto_raw): Add entry for R_PPC64_ENTRY. (LD_R2_0R12, ADD_R2_R2_R12, LIS_R2, ADDIS_R2_R12): Define. (ppc64_elf_reloc_type_lookup): Handle R_PPC64_ENTRY. (ppc64_elf_relocate_section): Edit code at R_PPC64_ENTTY. Use new insn defines. * libbfd.h: Regenerate. * bfd-in2.h: Regenerate.
2015-12-07tc-ppc.c md_apply_fix tidyAlan Modra2-12/+16
* config/tc-ppc.c (md_apply_fix): Localize variables. Reduce casts.
2015-12-07Reorder some power9 insnsAlan Modra2-11/+16
The idea being to put instructions that have the same encoding adjacent to each other. * opcodes/ppc-opc.c (powerpc_opcodes): Sort power9 insns by major opcode/xop.
2015-12-07bfd: Mark sh5*-*-* and sh64*-*-* targets as obsolete.Kaz Kojima2-0/+5
2015-12-07Automatic date update in version.inGDB Administrator1-1/+1
2015-12-06Replace remaining references to i386-nat with x86-nat instead.Joel Brobecker3-3/+10
i386-nat.[hc] got renamed to x86-nat.[hc] a while back, but somehow 3 references to the old file name remained past the renaming. This fixes all of them. gdb/ChangeLog (with Mike Stump <mikestump@comcast.net>): * Makefile.in (TAGS): Replace i386-nat.h by x86-nat.h. * x86-nat.c: Replace remaining references to i386-nat by reference to x86-nat instead.
2015-12-06Automatic date update in version.inGDB Administrator1-1/+1
2015-12-05Document the GDB 7.10.1 release in gdb/ChangeLogJoel Brobecker1-0/+4
gdb/ChangeLog: GDB 7.10.1 released.
2015-12-04gdbserver: set ptrace flags after creating inferiorsJosh Stone10-15/+106
Rename target_ops.arch_setup to .post_create_inferior. In the Linux hook, continue calling the low arch setup, then also set ptrace flags. This corrects the possibility of running without flags, demonstrated by a new test that would fail to catch a fork before. gdb/gdbserver/ChangeLog: 2015-12-04 Josh Stone <jistone@redhat.com> * target.h (struct target_ops) <arch_setup>: Rename to ... (struct target_ops) <post_create_inferior>: ... this. (target_arch_setup): Rename to ... (target_post_create_inferior): ... this, calling post_create_inferior. * server.c (start_inferior): Update target_arch_setup calls to target_post_create_inferior. * linux-low.c (linux_low_ptrace_options): Forward declare. (linux_arch_setup): Update its comment for general use. (linux_post_create_inferior): New, run arch_setup and setup ptrace. (struct linux_target_ops): Use linux_post_create_inferior. * lynx-low.c (struct lynx_target_ops): Update arch_setup stub comment to post_create_inferior. * nto-low.c (struct nto_target_ops): Likewise. * spu-low.c (struct spu_target_ops): Likewise. * win32-low.c (struct win32_target_ops): Likewise. gdb/testsuite/ChangeLog: 2015-12-04 Josh Stone <jistone@redhat.com> * gdb.base/catch-fork-static.exp: New.
2015-12-05Automatic date update in version.inGDB Administrator1-1/+1
2015-12-04Optimize R_386_GOT32/R_386_GOT32X only if addend is 0H.J. Lu15-13/+186
Linker can't optimize R_386_GOT32 and R_386_GOT32X relocations if addend isn't 0. It isn't valid to convert movl foo@GOT+1(%ecx), %eax to leal foo@GOTOFF+1(%ecx), %eax nor to convert movq foo@GOTPCREL+1(%rip), %rax to leaq foo(%rip), %rax for x86-64. We should check if addend is 0 before optimizing R_386_GOT32 and R_386_GOT32X relocations. Testcases are added for i386 and x86-64. bfd/ * elf32-i386.c (elf_i386_convert_load): Skip if addend isn't 0. (elf_i386_relocate_section): Skip R_386_GOT32X optimization if addend isn't 0. ld/testsuite/ * ld-i386/i386.exp: Run mov2a, mov2b and mov3. * ld-i386/mov2.s: New file. * ld-i386/mov2a.d: Likewise. * ld-i386/mov2b.d: Likewise. * ld-i386/mov3.d: Likewise. * ld-i386/mov3.s: Likewise. * ld-x86-64/mov2.s: Likewise. * ld-x86-64/mov2a.d: Likewise. * ld-x86-64/mov2b.d: Likewise. * ld-x86-64/mov2c.d: Likewise. * ld-x86-64/mov2d.d: Likewise. * ld-x86-64/x86-64.exp: Run mov2a, mov2b, mov2c and mov2d.
2015-12-04Fix GAS testsuite failures for COFF/PE based ARM targets.Nick Clifton5-3/+17
PR gas/19276 gas * config/tc-arm.h (SUB_SEGMENT_ALIGN): Do not define for COFF/PE targets. testsuite * gas/arm/align64.d: Skip for COFF/PE targets. * gas/arm/bundle-lock.d: Adjust for COFF/PE targets.
2015-12-04Remove useless loop in elf.cTristan Gingold2-5/+5
2015-12-04Fix failures in the GAS testsuite for the ARC architecture.Claudiu Zissulescu29-167/+622
gas * config/tc-arc.c (arc_option): Sets all internal gas options when parsing .cpu directive. (declare_register_set): Declare all 64 registers. (md_section_align): Refactor. (md_pcrel_from_section): Remove assert. (pseudo_operand_match): Fix pseudo operand match. (find_reloc): Use flags filed, extend matching. * config/tc-arc.h (TC_VALIDATE_FIX): Don't fixup any PLT relocation. testsuite * gas/arc/bic.d: Update test. * gas/arc/add_s-err.s: New file. * gas/arc/cpu-warn1.s: Likewise. * gas/arc/pcl-relocs.d: Likewise. * gas/arc/pcl-relocs.s: Likewise. * gas/arc/pcrel-relocs.d: Likewise. * gas/arc/pcrel-relocs.s: Likewise. * gas/arc/pic-relocs.d: Likewise. * gas/arc/pic-relocs.s: Likewise. * gas/arc/plt-relocs.d: Likewise. * gas/arc/plt-relocs.s: Likewise. * gas/arc/pseudos.d: Likewise. * gas/arc/pseudos.s: Likewise. * gas/arc/sda-relocs.d: Likewise. * gas/arc/sda-relocs.s: Likewise. * gas/arc/sda-relocs2.d: Likewise. * gas/arc/sda-relocs2.s: Likewise. * gas/arc/tls-relocs.d: Likewise. * gas/arc/tls-relocs.s: Likewise. opcode * arc.h (arc_reloc_equiv_tab): Replace flagcode with flags[32]. opcodes * arc-dis.c (special_flag_p): Match full mnemonic. * arc-opc.c (print_insn_arc): Check section size to read appropriate number of bytes. Fix printing. * arc-tbl.h: Fix instruction table. Allow clri/seti instruction without arguments.
2015-12-04Automatic date update in version.inGDB Administrator1-1/+1
2015-12-03Take addend into account when making GOT entries for local symbols.Vladimir Radosavljevic5-27/+244
gold/ * object.cc (Sized_relobj::do_for_all_local_got_entries): Use Local_got_entry_key for searching in local_got_offsets_. * object.h (class Local_got_entry_key): New class. (Relobj::local_has_got_offset): New overloaded method. (Relobj::local_got_offset): Likewise. (Relobj::set_local_got_offset): Likewise. (Relobj::do_local_has_got_offset): Add addend argument. (Relobj::do_local_got_offset): Likewise. (Relobj::do_set_local_got_offset): Likewise. (Sized_relobj::do_local_has_got_offset): Add addend argument, and use Local_got_entry_key for searching through local_got_offsets_. (Sized_relobj::do_local_got_offset): Likewise. (Sized_relobj::do_set_local_got_offset): Likewise. (Sized_relobj::Local_got_offsets): Change type of the key from unsigned int to Local_got_entry_key, and add hash and equal_to. * output.cc (Got_entry::write): Take addend into account for calculating value of the local symbol for GOT. (Output_data_got::add_local): New definition of overloaded method. (Output_data_got::add_local_with_rel): Likewise. (Output_data_got::add_local_pair_with_rel): Likewise. * output.h (Output_data_got::add_local): New declaration of overloaded method.
2015-12-03Remove duplicate arch/arm.h include in linux-arm-low.c.Antoine Tremblay2-2/+4
A duplicate include arm/arm.h was introduced, remove it. Pushed as obvious. gdb/gdbserver/ChangeLog: * linux-arm-low.c: Remove duplicate arch/arm.h include.
2015-12-03Run gdb.base/sizeof.exp with board having gdb,noinferiorioYao Qi3-39/+31
In my remote cross testing (x86_64 host and aarch64 target), the test gdb.base/sizeof.exp is skipped because gdb,noinferiorio is defined in my gdbserver board file. Tests are skipped because the test checks the expected value from the program's output, but I don't see why must do it this way. With my patch applied, we can save the result in variable in the program, and check the variable then. Then, the test doesn't rely on inferiorio. gdb/testsuite: 2015-12-03 Yao Qi <yao.qi@linaro.org> * gdb.base/sizeof.c: Don't include stdio.h and ../lib/unbuffer_output.c. (main): New variable 'size' and 'value'. Remove printf and gdb_unbuffer_output. Assign return value to size and value. * gdb.base/sizeof.exp: Remove the checking to gdb,noinferiorio at the beginning. (check_sizeof): Check the result by printing variable 'size'. (check_valueof): Check the result by printing variable 'value'.
2015-12-03Darwin: add new mach-o header flags.Tristan Gingold4-1/+16
binutils/ * od-macho.c (bfd_mach_o_header_flags_name): Add name for flags until BFD_MACH_O_MH_APP_EXTENSION_SAFE. include/mach-o/ * loader.h (bfd_mach_o_header_flags): Add BFD_MACH_O_MH_APP_EXTENSION_SAFE.
2015-12-03Automatic date update in version.inGDB Administrator1-1/+1
2015-12-02addr2line vs. inlined C functions called from C++Alan Modra3-14/+31
In this case the inlined function doesn't have DW_AT_linkage_name in .debug_info, but the language is C++ so find_nearest_line goes looking in the symbol table. Since the function is inlined the enclosing non-inline function symbol is returned from _bfd_elf_find_function, which is wrong. This patch only uses a symbol if its address matches. PR binutils/19315 * dwarf2.c (_bfd_elf_find_function): Return symbol matched. (_bfd_dwarf2_find_nearest_line): Check symbol returned above against dwarf range. * elf-bfd.h (_bfd_elf_find_function): Update prototype.
2015-12-02Make --enable-initfini-array the defaultAlan Modra3-54/+17
* configure.ac (--enable-initfini-array): Remove run test. Default to "yes". Change help string to --disable-initfini-array. * configure: Regenerate.
2015-12-02Fix powerpc64 segfault caused by zero r_symndx relocs.Alan Modra2-2/+13
Fixes a segfault in ppc64_elf_tls_optimize found when testing R_PPC64_ENTRY, and potential for trouble in other places found by code inspection. * elf64-ppc.c (ppc64_elf_tls_optimize): Don't segfault on NULL symbol section or output section. (ppc64_elf_edit_toc): Similarly for ld -R objects. (ppc64_elf_size_stubs): Likewise.
2015-12-02Fix ldah being disassembled as ldaexhAndre Vieira4-4/+14
2015-12-02 Andre Vieira <andre.simoesdiasvieira@arm.com> opcodes/ * arm-dis.c (arm_opcodes): <ldaexh>: Fix typo... <ldah>: ... to this. gas/testsuite/ * gas/arm/armv8-a.d: <ldaexh>: Rename mismatched mnemonics ... <ldah>: ... to this.
2015-12-02Automatic date update in version.inGDB Administrator1-1/+1
2015-12-01Properly check symbol defined by assignment in linker scriptH.J. Lu12-13/+121
Symbol defined by a linker assignment may have type bfd_link_hash_new or bfd_link_hash_undefined. And h->def_regular is always set. elf_i386_convert_load and elf_x86_64_convert_load should check h->def_regular as well as bfd_link_hash_undefined and bfd_link_hash_new to see if a symbol is defined by a linker script. bfd/ PR ld/19319 * elf32-i386.c (elf_i386_convert_load): Check h->def_regular instead of bfd_link_hash_new. * elf64-x86-64.c (elf_x86_64_convert_load): Likewise. Skip relocation overflow for bfd_link_hash_undefined and bfd_link_hash_new if h->def_regular is set. ld/testsuite/ PR ld/19319 * ld-i386/i386.exp: Run pr19319 test. * ld-x86-64/x86-64.exp: Likewise. * ld-i386/pr19319.dd: New file. * ld-i386/pr19319a.S: Likewise. * ld-i386/pr19319b.S: Likewise. * ld-x86-64/pr19319.dd: Likewise. * ld-x86-64/pr19319a.S: Likewise. * ld-x86-64/pr19319b.S: Likewise.
2015-12-01Avoid "operation may be undefined" warning in remote.cUlrich Weigand2-1/+6
GCC 4.1 gives the following warning: gdb/remote.c: In function 'remote_parse_stop_reply': gdb/remote.c:6549: warning: operation on 'p' may be undefined on this line of code: event->ptid = read_ptid (++p, &p); Since p actually isn't used afterwards anyway, simply use NULL. gdb/ * remote.c (remote_parse_stop_reply): Avoid GCC 4.1 "operation may be undefined" warning.
2015-12-01Fix uninitialized variable warnings in remote.cUlrich Weigand2-0/+7
Fix a couple of places where a struct thread_item was added to a vector while the item.name field was uninitialized. gdb/ * remote.c (remote_newthread_step): Initialize item.name. (remote_get_threads_with_qthreadinfo): Likewise.
2015-12-01Run gdb.base/disp-step-syscall.exp for aarch64-linuxYao Qi2-1/+6
This patch handles target aarch64*-*-linux* for syscall instruction. gdb/testsuite: 2015-12-01 Yao Qi <yao.qi@linaro.org> * gdb.base/disp-step-syscall.exp: Define syscall instruction for aarch64*-*-linux* target.
2015-12-01Trim unused params from aout adjust_sizes_and_vmasAlan Modra9-56/+27
* aoutx.h (adjust_sizes_and_vmas): Remove unused text_size and text_end parameters. Update callers. * aout-tic30.c: Update adjust_sizes_and_vmas callers. * hp300hpux.c: Likewise. * i386lynx.c: Likewise. * libaout.h: Likewise. * netbsd.h: Likewise. * pdp11.c: Likewise. * riscix.c: Likewise.
2015-12-01Invoke aout N_* macros with pointer to struct internal_execAlan Modra40-338/+390
No functional changes here. BTW, some of these headers don't seem to be used anywhere: include/aout/dynix3.h, include/aout/encap.h, include/aout/hp.h, gas/config/aout_gnu.h bfd/ * aout-adobe.c: Invoke aout N_* macros with pointer to struct internal_exec. * aout-arm.c: Likewise. * aout-cris.c: Likewise. * aout-target.h: Likewise. * aout-tic30.c: Likewise. * aoutf1.h: Likewise. * aoutx.h: Likewise. * bout.c: Likewise. * freebsd.h: Likewise. * gen-aout.c: Likewise. * hp300hpux.c: Likewise. * i386aout.c: Likewise. * i386linux.c: Likewise. * i386lynx.c: Likewise. * i386mach3.c: Likewise. * i386os9k.c: Likewise. * libaout.h: Likewise. * m68klinux.c: Likewise. * m88kmach3.c: Likewise. * mipsbsd.c: Likewise. * netbsd.h: Likewise. * pc532-mach.c: Likewise. * pdp11.c: Likewise. * riscix.c: Likewise. * sparclinux.c: Likewise. * sparclynx.c: Likewise. gas/ * config/aout_gnu.h: Invoke aout N_* macros with pointer to struct internal_exec. include/ * bout.h: Invoke aout N_* macros with pointer to struct internal_exec. * os9k.h: Likewise. include/aout/ * adobe.h: Invoke aout N_* macros with pointer to struct internal_exec. * aout64.h: Likewise. * dynix3.h: Likewise. * encap.h: Likewise. * hp.h: Likewise. * hp300hpux.h: Likewise. * sun4.h: Likewise.
2015-12-01Don't use BFD_TRADITIONAL_FORMAT flag in COFF supportAlan Modra6-24/+39
info->traditional_format is available, or can be easily made available. This relegates BFD_TRADITIONAL_FORMAT to AOUT use only. * coff-rs6000.c (_bfd_xcoff_put_symbol_name): Replace abfd param with info param. Test info->traditional_format rather than BFD_TRADITIONAL_FORMAT flag. * coff64-rs6000.c (_bfd_xcoff64_put_symbol_name): Likewise. * libxcoff.h (struct xcoff_backend_data_rec): Update _xcoff_put_symbol_name prototype. (bfd_xcoff_put_symbol_name): Add info param. * xcofflink.c (xcoff_find_tc0): Update bfd_xcoff_put_symbol_name call. (xcoff_write_global_symbol): Likewise. (xcoff_link_input_bfd): Test info->traditional_format rather than BFD_TRADITIONAL_FORMAT flag. * cofflink.c (_bfd_coff_final_link): Likewise. (_bfd_coff_link_input_bfd, _bfd_coff_write_global_sym): Likewise.
2015-12-01binutils/configure updateAlan Modra2-1/+5
Missed from f8c2a965. * configure: Regenerate.
2015-12-01SRC-POTFILES.in updateAlan Modra2-0/+6
* po/SRC-POTFILES.in: Regenerate.
2015-12-01Re: ARC port broken reloc processingAlan Modra2-14/+22
* elf32-arc.c (ARC_ELF_HOWTO): Delete. (arc_elf_howto): New function. (bfd_elf32_bfd_reloc_type_lookup): Use it in place of existing init code. (bfd_elf32_bfd_reloc_name_lookup): Use arc_elf_howto. (arc_info_to_howto_rel, elf_arc_relocate_section): Likwise. (elf_arc_check_relocs): Likewise.
2015-12-01ARC port broken reloc processingAlan Modra2-1/+6
This initialises howto.dst_mask so that relocations in debug sections are applied by the generic reloc processing used by objdump to display debug sections. * elf32-arc.c (arc_elf_howto_init): Init dst_mask.
2015-12-01Automatic date update in version.inGDB Administrator1-1/+1
2015-11-30Remove too simple breakpoint_reinsert_addr implementations.Antoine Tremblay7-88/+21
This patch removes too simple implementations of the breakpoint_reinsert_addr operation. The only reason to keep them around was to support thread events when PTRACE_EVENT_CLONE was not present but this support has been removed in a previous patch. No regressions, tested on ubuntu 14.04 ARMv7 and x86. With gdbserver-{native,extended} / { -marm -mthumb } Also compilation was tested on aarch64, bfin, cris, crisv32, m32r, mips, nios2, ppc, s390, sparc, tic6x, tile, xtensa. gdb/gdbserver/ChangeLog: * linux-arm-low.c (arm_reinsert_addr): Remove function. (struct linux_target_ops <breakpoint_reinsert_addr>: Set to NULL. * linux-cris-low.c (cris_reinsert_addr> Remove function. (struct linux_target_ops) <breakpoint_reinsert_addr>: Set to NULL. * linux-crisv32-low.c (cris_reinsert_addr): Remove function. (struct linux_target_ops) <breakpoint_reinsert_addr>: Set to NULL. * linux-mips-low.c (mips_reinsert_addr): Remove function. (struct linux_target_ops) <breakpoint_reinsert_addr>: Set to NULL. * linux-nios2-low.c (nios2_reinsert_addr): Remove function. (struct linux_target_ops) <breakpoint_reinsert_addr>: Set to NULL. * linux-sparc-low.c (sparc_reinsert_addr): Remove function. (struct linux_target_ops) <breakpoint_reinsert_addr>: Set to NULL.
2015-11-30Remove support for thread events without PTRACE_EVENT_CLONE in GDBServer.Antoine Tremblay4-154/+25
This patch removes support for thread events if PTRACE_EVENT_CLONE is not supported in GDBServer. Before, on systems that did not support PTRACE_EVENT_CLONE, both GDB and GDBServer coordinated with libthread_db.so to insert breakpoints at magic locations in libpthread.so, in order to break at thread creation and thread death. Simple software single stepping support was implemented to step over these breakpoints in case there was no hardware single stepping support. However, these simple software single stepping implementations were not fit for any other use as discussed in : https://sourceware.org/ml/gdb-patches/2015-04/msg01110.html These too simple implementations conflict with ongoing work to make proper implementations of software single stepping in GDBServer. The problem is that if some implementations are correct and others are not and only there for the thread magic breakpoint, we can't enable features based solely software single step support since some would be broken. To keep the incorrect implementations and allow the new proper ones at the same time we would need to implement fallback code and it quickly becomes ugly and confusing with multiple checks for legacy software single step or proper software single step. However, PTRACE_EVENT_CLONE was first introduced in Linux 2.5.46, released in November 2002. So I think it's reasonable to just remove support for kernels that don't support PTRACE_EVENT_CLONE, and sidestep the libthread_db breakpoints issues entirely. This thread on the mailling list discusses the issue : https://sourceware.org/ml/gdb/2015-10/msg00078.html No regressions, tested on ubuntu 14.04 ARMv7 and x86. With gdbserver-{native,extended} / { -marm -mthumb } gdb/gdbserver/ChangeLog: * linux-low.c (linux_look_up_symbols): Don't call linux_supports_traceclone. * linux-low.h (thread_db_init): Remove use_events argument. * thread-db.c (thread_db_use_event): Remove global variable. (struct thread_db) <td_thr_event_enable_p>: Remove field. (struct thread_db) <td_create_bp>: Remove field. (thread_db_create_event): Remove function. (thread_db_enable_reporting): Likewise. (find_one_thread): Don't check for thread_db_use_events. (attach_thread): Likewise. (thread_db_load_search): Remove td_thr_event_enable_p initialization. (try_thread_db_load_1): Don't check for thread_db_use_events. (thread_db_init): Remove use_events argument and thread events handling. (remove_thread_event_breakpoints): Remove function. (thread_db_detach): Remove call to remove_thred_event_breakpoints.
2015-11-30Refactor queries for hardware and software single stepping support in GDBServer.Antoine Tremblay16-6/+355
Before this patch there was only one call: can_hardware_single_step. Its implementation was a check on breakpoint_reinsert_addr if NULL it assumed that the target could hardware single step. This patch prepares for the case where this is not true anymore. In order to improve software single stepping in GDBServer the breakpoint_reinsert_addr operation of targets that had a very simple software implementation used only for stepping over thread creation events will be removed. This will create a case where a target does not support hardware single step and has the operation breakpoint_reinsert_addr set to NULL, thus can_hardware_single_step needs to be implemented another way. A new target operation supports_hardware_single_step is introduced and is to return true if the target does support such a feature, support for the feature is manually hardcoded. Note that the hardware single step support was enabled as per the current behavior, I did not check if tile for example really has ptrace singlestep support but since the current implementation assumed it had, I kept it that way. No regressions on Ubuntu 14.04 on ARMv7 and x86. With gdbserver-{native,extended} / { -marm -mthumb } Compilation tested on: aarch64,arm,bfind,crisv32,m32r,ppc,s390,tic6x,tile, xtensa. Not tested : sh. gdb/gdbserver/ChangeLog: * linux-aarch64-low.c (aarch64_supports_hardware_single_step): New function. (struct linux_target_ops) <supports_hardware_single_step>: Initialize. * linux-arm-low.c (arm_supports_hardware_single_step): New function. (struct linux_target_ops) <supports_hardware_single_step>: Initialize. * linux-bfin-low.c (bfin_supports_hardware_single_step): New function. (struct linux_target_ops) <bfin_supports_hardware_single_step>: Initialize. * linux-crisv32-low.c (cris_supports_hardware_single_step): New function. (struct linux_target_ops) <supports_hardware_single_step>: Initialize. * linux-low.c (can_hardware_single_step): Use supports_hardware_single_step. (can_software_single_step): New function. (start_step_over): Call can_software_single_step. (linux_supports_hardware_single_step): New function. (struct target_ops) <supports_software_single_step>: Initialize. * linux-low.h (struct linux_target_ops) <supports_hardware_single_step>: Initialize. * linux-m32r-low.c (m32r_supports_hardware_single_step): New function. (struct linux_target_ops) <supports_hardware_single_step>: Initialize. * linux-ppc-low.c (ppc_supports_hardware_single_step): New function. (struct linux_target_ops) <supports_hardware_single_step> Initialize. * linux-s390-low.c (s390_supports_hardware_single_step): New function. (struct linux_target_ops) <supports_hardware_single_step>: Initialize. * linux-sh-low.c (sh_supports_hardware_single_step): New function. (struct linux_target_ops) <supports_hardware_single_step>: Initialize. * linux-tic6x-low.c (tic6x_supports_hardware_single_step): New function. (struct linux_target_ops) <tic6x_supports_hardware_single_step>: Initialize. * linux-tile-low.c (tile_supports_hardware_single_step): New function. (struct linux_target_ops) <tile_supports_hardware_single_step>: Initialize. * linux-x86-low.c (x86_supports_hardware_single_step) New function. (struct linux_target_ops) <supports_hardware_single_step>: Initialize. * linux-xtensa-low.c (xtensa_supports_hardware_single_step): New function. (struct linux_target_ops) <supports_hardware_single_step>: Initialize. * target.h (struct target_ops): <supports_software_single_step>: New field. (target_supports_software_single_step): New macro.
2015-11-30Fix instruction skipping when using software single step in GDBServerAntoine Tremblay4-7/+41
Without this patch, when doing a software single step, with for example a conditional breakpoint, gdbserver would wrongly avance the pc of breakpoint_len and skips an instruction. This is due to gdbserver assuming that it's hardware single stepping. When it resumes from the breakpoint address it expects the trap to be caused by ptrace and if it's rather caused by a software breakpoint it assumes this is a permanent breakpoint and that it needs to skip over it. However when software single stepping, this breakpoint is legitimate as it's the reinsert breakpoint gdbserver has put in place to break at the next instruction. Thus gdbserver wrongly advances the pc and skips an instruction. This patch fixes this behavior so that gdbserver checks if it is a reinsert breakpoint from software single stepping. If it is it won't advance the pc. And if there's no reinsert breakpoint there we assume then that it's a permanent breakpoint and advance the pc. Here's a commented log of what would happen before and after the fix on gdbserver : /* Here there is a conditional breakpoint at 0x10428 that needs to be stepped over. */ Need step over [LWP 11204]? yes, found breakpoint at 0x10428 ... /* e7f001f0 is a breakpoint instruction on arm Here gdbserver writes the software breakpoint we would like to hit */ Writing e7f001f0 to 0x0001042c in process 11204 ... Resuming lwp 11220 (continue, signal 0, stop not expected) pending reinsert at 0x10428 stop pc is 00010428 continue from pc 0x10428 ... /* Here gdbserver hit the software breakpoint that was in place for the step over */ stop pc is 0001042c pc is 0x1042c step-over for LWP 11220.11220 executed software breakpoint Finished step over. Could not find fast tracepoint jump at 0x10428 in list (reinserting). /* Here gdbserver writes back the original instruction */ Writing e50b3008 to 0x0001042c in process 11220 Step-over finished. Need step over [LWP 11220]? No /* Here because gdbserver assumes this is a permenant breakpoint it advances the pc of breakpoint_len, in this case 4 bytes, so we have just skipped the instruction that was written back here : Writing e50b3008 to 0x0001042c in process 11220 */ stop pc is 00010430 pc is 0x10430 Need step over [LWP 11220]? No, no breakpoint found at 0x10430 Proceeding, no step-over needed proceed_one_lwp: lwp 11220 stop pc is 00010430 This patch fixes this situation and we get the right behavior : Writing e50b3008 to 0x0001042c in process 11245 Hit a gdbserver breakpoint. Hit a gdbserver breakpoint. Step-over finished. proceeding all threads. Need step over [LWP 11245]? No stop pc is 0001042c pc is 0x1042c Need step over [LWP 11245]? No, no breakpoint found at 0x1042c Proceeding, no step-over needed proceed_one_lwp: lwp 11245 stop pc is 0001042c pc is 0x1042c Resuming lwp 11245 (continue, signal 0, stop not expected) stop pc is 0001042c continue from pc 0x1042c It also works if the value at 0x0001042c is a permanent breakpoint. If so gdbserver will finish the step over, remove the reinserted breakpoint, resume at that location and on the next SIGTRAP gdbserver will trigger the advance PC condition as reinsert_breakpoint_inserted_here will be false. I also tested this against bp-permanent.exp on arm (with a work in progress software single step patchset) without any regressions. It's also tested against x86 bp-permanent.exp without any regression. So both software and hardware single step are tested. No regressions on Ubuntu 14.04 on ARMv7 and x86. With gdbserver-{native,extended} / { -marm -mthumb } gdb/gdbserver/ChangeLog: * linux-low.c (linux_wait_1): Fix pc advance condition. * mem-break.c (reinsert_breakpoint_inserted_here): New function. * mem-break.h (reinsert_breakpoint_inserted_here): New declaration.