1. 30 Jun, 2018 1 commit
  2. 29 Jun, 2018 3 commits
    • Ramana Radhakrishnan's avatar
      [Patch AArch64] Warn on unpredictable stlxrb , stlxrh and stlxr cases. · 513e3973
      Ramana Radhakrishnan authored
      A recent case in golang highlighted that gas wasn't warning on these
      unpredictable cases in the architecture. Fixed thusly.
      I need to audit gcc to make sure we have early clobbers on the
      patterns but that's a separate patch.
      Tested aarch64-none-elf and gas
      Ok ?
      2018-06-29 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
              * config/tc-aarch64.c (warn_unpredictable_ldst): Add
              unpredictable cases for ldxp, stlxrb, stlxrh, stlxr.  *
              testsuite/gas/aarch64/diagnostic.s: New tests.  *
              testsuite/gas/aarch64/diagnostic.l: Adjust.
    • Tamar Christina's avatar
      Fix AArch64 encodings for by element instructions. · 48d86a7a
      Tamar Christina authored
      Some instructions in Armv8-a place a limitation on FP16 registers that can be
      used as the register from which to select an element from.
      e.g. fmla restricts Rm to 4 bits when using an FP16 register.  This restriction
      does not apply for all instructions, e.g. fcmla does not have this restriction
      as it gets an extra bit from the M field.
      Unfortunately, this restriction to S_H was added for all _Em operands before,
      meaning for a large number of instructions you couldn't use the full register
      This fixes the issue by introducing a new operand _Em16 which applies this
      restriction only when paired with S_H and leaves the _Em and the other
      qualifiers for _Em16 unbounded (i.e. using the full 5 bit range).
      Also the patch updates all instructions that should be affected by this.
      	PR binutils/23192
      	* aarch64-asm-2.c: Regenerate.
      	* aarch64-dis-2.c: Likewise.
      	* aarch64-opc-2.c: Likewise.
      	* aarch64-dis.c (aarch64_ext_reglane): Add AARCH64_OPND_Em16 constraint.
      	* aarch64-opc.c (operand_general_constraint_met_p,
      	aarch64_print_operand): Likewise.
      	* aarch64-tbl.h (aarch64_opcode_table): Change Em to Em16 for smlal,
      	smlal2, fmla, fmls, fmul, fmulx, sqrdmlah, sqrdlsh, fmlal, fmlsl,
      	fmlal2, fmlsl2.
      	(AARCH64_OPERANDS): Add Em2.
      	PR binutils/23192
      	* config/tc-aarch64.c (process_omitted_operand, parse_operands): Add
      	* testsuite/gas/aarch64/advsimd-armv8_3.s: Expand tests to cover upper
      	16 registers.
      	* testsuite/gas/aarch64/advsimd-armv8_3.d: Likewise.
      	* testsuite/gas/aarch64/advsimd-compnum.s: Likewise.
      	* testsuite/gas/aarch64/advsimd-compnum.d: Likewise.
      	* testsuite/gas/aarch64/sve.d: Likewise.
      	PR binutils/23192
      	*opcode/aarch64.h (aarch64_opnd): Add AARCH64_OPND_Em16.
      (cherry picked from commit 369c9167
      Signed-off-by: default avatarTamar Christina <tamar.christina@arm.com>
    • GDB Administrator's avatar
      Automatic date update in version.in · 59ee9ce5
      GDB Administrator authored
  3. 28 Jun, 2018 1 commit
  4. 27 Jun, 2018 2 commits
    • Alan Modra's avatar
      gas object file locations · beb6b9a6
      Alan Modra authored
      With the update to newer autotools, some gas object files are now
      built in config/, breaking xtensa-elf and ia64-vms.  This patch fixes
      the dependencies.
      	* configure.ac: Specify extra_objects with leading "config/"
      	for xtensa-relax.o and te-vms.o.  Use case statements to unique
      	extra_objects.  Formatting.
      	* configure: Regenerate.
      (cherry picked from commit e11078da)
    • GDB Administrator's avatar
      Automatic date update in version.in · 217e7ac9
      GDB Administrator authored
  5. 26 Jun, 2018 6 commits
    • Alan Modra's avatar
      PR23169 bogus test · 83195288
      Alan Modra authored
      The testcase isn't valid.  If it happens to run on your target, you're
      	PR 23169
      	* testsuite/ld-ifunc/ifunc.exp: Don't run pr23169 tests on
      	powerpc.  Comment.
    • Alan Modra's avatar
      Fix parens in ld bootstrap.exp · 080dd03d
      Alan Modra authored
      Seen with tcl 8.5.13:
      ERROR: tcl error sourcing .../ld/testsuite/ld-bootstrap/bootstrap.exp.
      ERROR: expected boolean value but got " [istarget ia64-*-elf*] || [istarget ia64-*-linux*"
          while executing
      "if { "$flags" == "--static" && { [istarget ia64-*-elf*] || [istarget ia64-*-linux*] }
      	 || [istarget mips*-*-linux*] } {
      	# On ia64 and mips, tmpdir/l..."
      	* testsuite/ld-bootstrap/bootstrap.exp: Use parentheses rather
      	than curly braces in logical expression.
    • Alan Modra's avatar
    • Nick Clifton's avatar
      Updated translations. · 71b4e2ec
      Nick Clifton authored
      opcodes	* po/uk.po: Updated Ukranian translation.
      	* po/de.po: Updated German translation.
      	* po/pt_BR.po: Updated Brazilian Portuguese translation.
      ld	* po/uk.po: Updated Ukranian translation.
      gold	* po/uk.po: Updated Ukranian translation.
      gas	* po/uk.po: Updated Ukranian translation.
      bfd	* po/uk.po: Updated Ukranian translation.
      binutils* po/sv.po: Updated Swedish translation.
      	* po/uk.po: Updated Ukranian translation.
    • Nick Clifton's avatar
      Fix spelling mistakes. · cb10b9fa
      Nick Clifton authored
      opcodes	* nfp-dis.c: Fix spelling mistake.
      ld	* emultempl/aarch64elf.em: Fix spelling mistake.
      	* emultempl/avrelf.em: Likewise.
      	* emultempl/elf32.em: Likewise.
      binutils* doc/binutils.texi: Fix spelling mistakes.
    • GDB Administrator's avatar
      Automatic date update in version.in · 26d12bc0
      GDB Administrator authored
  6. 25 Jun, 2018 1 commit
  7. 24 Jun, 2018 3 commits
  8. 23 Jun, 2018 6 commits
    • Cary Coutant's avatar
      Bump version number and summarize new features in 1.16. · 155ea1bc
      Cary Coutant authored
      	* version.cc (version_string): Bump to 1.16.
      	* NEWS: Add new features in 1.16.
    • Cary Coutant's avatar
      Fix "may be used uninitialized" warning. · add41311
      Cary Coutant authored
      	PR gold/22914
      	* x86_64.cc (Target_x86_64::record_gnu_property): Initialize val.
    • Cary Coutant's avatar
      Add x86-64 support for Indirect Branch Tracking (IBT). · 750ea5ed
      Cary Coutant authored
      	PR gold/22915
      	* x86_64.cc (Output_data_plt_x86_64_ibt): New class.
      	(Target_x86_64::do_make_data_plt): (All instantiations) Check for
      	IBT feature bit and create IBT PLTs.
    • Cary Coutant's avatar
      Update support for .note.gnu.property sections. · a2575bec
      Cary Coutant authored
      The original patch did not give the target enough hooks to discover that
      an input object file does not have a particular property. For the
      GNU_PROPERTY_X86_FEATURE_1_AND property, for example, where a missing
      property should be assumed to be all zeroes, and ANDed with other
      object modules, this is essential. We now store the target-specific
      properties locally in the Target structure as native uint32_t fields,
      then AND the per-object feature bits with the program's feature bits
      when we're finished processing each input object file. The target-specific
      properties are then added back to the output note section during
      	PR gold/22914
      	* layout.cc (read_sized_value): Fix spelling of section name.
      	(Layout::layout_gnu_property): Call Sized_target::record_gnu_property
      	for target-specific properties;
      	don't store them with target-independent properties yet.
      	(Layout::merge_gnu_properties): New method.
      	(Layout::add_gnu_property): New method.
      	(Layout::create_gnu_properties_note): Call target to finalize
      	target-specific properties. Fix spelling of output section name.
      	* layout.h (Layout::merge_gnu_properties): New method.
      	(Layout::add_gnu_property): New method.
      	* object.cc (Sized_relobj_file::do_layout): Call
      	* target.h (Target::merge_gnu_property): Remove.
      	(Target::finalize_gnu_properties): New method.
      	(Target::do_merge_gnu_property): Move to Sized_target and rename.
      	(Target::do_finalize_gnu_properties): New virtual method.
      	(Sized_target::record_gnu_property): Moved and renamed from
      	(Sized_target::merge_gnu_properties): New virtual method.
      	* x86_64.cc (Target_x86_64::isa_1_used_, isa_1_needed_)
      	(feature_1_, object_feature_1_, seen_first_object_): New data members.
      	(Target_x86_64::do_merge_gnu_property): Rename to ...
      	(Target_x86_64::record_gnu_property): ... this.  Save target-specific
      	properties in Target class object.
      	(Target_x86_64::merge_gnu_properties): New method.
      	(add_property): New static inline function.
      	(Target_x86_64::do_finalize_gnu_properties): New method.
      	* testsuite/Makefile.am (gnu_property_test): Remove C source file;
      	link directly without compiler driver.
      	* testsuite/Makefile.in: Regenerate.
      	* testsuite/gnu_property_a.S: Add _start.
    • Cary Coutant's avatar
      Silence GCC 9 error about deprecated implicit copy constructor. · a1893a82
      Cary Coutant authored
      Replacing push_back() with emplace_back() eliminates the calls to the
      copy constructor, but I still had to provide explicit copy constructors
      because of the call to vector::reserve(), which tries to instantiate them
      even though they'll never actually be called when reserve() is called
      on an empty vector.
      	* incremental.cc (Sized_incremental_binary::setup_readers): Use
      	emplace_back for GCC 5 and later.
      	* incremental.h (Incremental_binary::Input_reader): Provide copy
      	(Sized_incremental_binary::Sized_input_reader): Likewise.
    • GDB Administrator's avatar
      Automatic date update in version.in · 2e7a29d5
      GDB Administrator authored
  9. 22 Jun, 2018 6 commits
    • Simon Marchi's avatar
      Fix "info registers" regexes in gdb.base/jit-reader.exp · 6d72d289
      Simon Marchi authored
        e813d34a ("Align natural-format register values to the same column")
      changed the output of "info registers" (tabs to spaces), but didn't
      update gdb.base/jit-reader.exp.  Update the regexes to expect spaces
      	* gdb.base/jit-reader.exp (jit_reader_test): Expect spaces in
      	"info registers" output.
    • Cary Coutant's avatar
      Add support for .note.gnu.property sections. · 6c04fd9b
      Cary Coutant authored
      	PR gold/22914
      	* elfcpp.h (NT_GNU_PROPERTY_TYPE_0): New note type.
      	(GNU_PROPERTY_*): New Gnu property types.
      	* x86_64.h (GNU_PROPERTY_X86_FEATURE_1_IBT)
      	(GNU_PROPERTY_X86_FEATURE_1_SHSTK): New x86 feature bits.
      	PR gold/22914
      	* layout.cc (Layout::Layout): Initialize gnu_properties_.
      	(read_sized_value, write_sized_value): New functions.
      	(Layout::layout_gnu_property): New method.
      	(Layout::create_notes): Call create_gnu_properties_note.
      	(Layout::create_gnu_properties_note): New method.
      	* layout.h (Layout::layout_gnu_property): New method.
      	(Layout::create_gnu_properties_note): New method.
      	(Layout::Gnu_property, Layout::Gnu_properties): New types.
      	(Layout::gnu_properties_): New data member.
      	* object.cc (Sized_relobj_file::layout_gnu_property_section): New
      	(Sized_relobj_file::do_layout): Handle .note.gnu.property sections.
      	* object.h (Sized_relobj_file::layout_gnu_property_section): New
      	* target.h (Target::merge_gnu_property): New method.
      	(Target::do_merge_gnu_property): New virtual method.
      	* x86_64.cc (Target_x86_64::do_merge_gnu_property): New method.
      	* testsuite/Makefile.am (gnu_property_test): New test case.
      	* testsuite/Makefile.in: Regenerate.
      	* testsuite/gnu_property_a.S: New source file.
      	* testsuite/gnu_property_b.S: New source file.
      	* testsuite/gnu_property_c.S: New source file.
      	* testsuite/gnu_property_main.c: New source file.
      	* testsuite/gnu_property_test.sh: New test script.
    • Alan Hayward's avatar
      Use partial register read/writes in transfer_regset · 8e7767e3
      Alan Hayward authored
      This avoids assert failures when the register is bigger than the
      slot size. This happens on Aarch64 when truncating Z registers
      into an fpsimd structure. This can be triggered by running
      gdb command "generate-core-file".
      Also, when the register is smaller then the slot size, then
      zero pad when writing to the slot, and truncate when writing
      to the regcache. This happens on Aarch64 with the CPSR register.
      Continue to ensure registers are invalidated when both buffers
      are null.
      	* regcache.c (readable_regcache::read_part): Fix asserts.
      	(reg_buffer::raw_collect_part): New function.
      	(regcache::write_part): Fix asserts.
      	(reg_buffer::raw_supply_part): New function.
      	(regcache::transfer_regset_register): New helper function.
      	(regcache::transfer_regset): Call new functions.
      	(regcache_supply_regset): Use gdb_byte*.
      	(regcache::supply_regset): Likewise.
      	(regcache_collect_regset): Likewise.
      	(regcache::collect_regset): Likewise.
      	* regcache.h (reg_buffer::raw_collect_part): New declaration.
      	(reg_buffer::raw_supply_part): Likewise.
      	(regcache::transfer_regset_register): Likewise.
      	(regcache::transfer_regset): Use gdb_byte*.
    • Tamar Christina's avatar
      Correct negs aliasing on AArch64. · 514cd3a0
      Tamar Christina authored
      This patch fixes a disassembly issue with the aliases to subs with a shifted
      register.  The subs instruction with the zero register as destination is
      supposed to alias to cmp and when the first input register is the zero register
      the subs is supposed to be aliased to negs.
      This means that a subs with destination and first input registers the zero
      register is supposed to be a cmp.
      This is done by raising the priority of the cmp alias.
      	* aarch64-tbl.h (aarch64_opcode_table): Fix alias flag for negs
      	* aarch64-asm-2.c: Regenerate.
      	* aarch64-dis-2.c: Likewise.
      	* testsuite/gas/aarch64/addsub.s: Add negs to zero reg test.
      	* testsuite/gas/aarch64/addsub.d: Likewise.
    • Alan Hayward's avatar
      Fix up HAS_SVE_STATE macro · bfd60e34
      Alan Hayward authored
      Prevents build break on aarch64 Suse.
      2018-06-22  Alan Hayward  <alan.hayward@arm.com>
      	* nat/aarch64-sve-linux-ptrace.h (HAS_SVE_STATE): Use &.
    • GDB Administrator's avatar
      Automatic date update in version.in · 8ea3acd6
      GDB Administrator authored
  10. 21 Jun, 2018 11 commits
    • Maciej W. Rozycki's avatar
      MIPS/opcodes: Fix a typo in `-M ginv' option description · 385e4d0f
      Maciej W. Rozycki authored
      	* mips-dis.c (print_mips_disassembler_options): Fix a typo in
      	`-M ginv' option description.
    • Cary Coutant's avatar
      Fix treatment of symbol versions with unused as-needed libraries. · cea6ffbd
      Cary Coutant authored
      When we have a weak reference to a symbol defined in an
      as-needed library, and that library ends up not-needed, gold
      simply clears the version information in the symbol table, even
      if the symbol could have been resolved by a needed library later
      in the link order. This results in a loss of version information,
      which can cause the program to bind to the wrong version at run
      This patch lets a dynamic definition override an earlier one if
      the earlier one is from a not-needed library, so that we can
      retain the version information from the binding to the needed
      library. In order to do that, the tracking of needed/not-needed
      had to be moved up to symbol resolution time, instead of during
      In cases where we still end up discarding version information,
      I've added a warning.
      For the original problem report and discussion, see:
      	* resolve.cc (Symbol_table::resolve): Rename tobinding to
      	orig_tobinding.  Call set_is_needed() for objects that resolve
      	non-weak references.
      	(Symbol_table::should_override): Allow a dynamic definition to
      	override an earlier one in a not-needed library.
      	* symtab.cc (Symbol_table::set_dynsym_indexes): Remove separate
      	processing for as-needed symbols.  Add warning when discarding
      	version informatin.
      	* testsuite/Makefile.am (weak_as_needed): New test case.
      	* testsuite/Makefile.in: Regenerate.
      	* testsuite/weak_as_needed.sh: New test script.
      	* testsuite/weak_as_needed_a.c: New source file.
      	* testsuite/weak_as_needed_b.c: New source file.
      	* testsuite/weak_as_needed_b.script: New version script.
      	* testsuite/weak_as_needed_c.c: New source file.
      	* testsuite/weak_as_needed_c.script: New version script.
    • Maciej W. Rozycki's avatar
      MIPS/BFD: Correct formatting of compact EH backend methods · 1ced1a5f
      Maciej W. Rozycki authored
      Correct the formatting of `_bfd_mips_elf_compact_eh_encoding' and
      `_bfd_mips_elf_cant_unwind_opcode' definitions which extend beyond 79
      	* elfxx-mips.c (_bfd_mips_elf_compact_eh_encoding)
      	(_bfd_mips_elf_cant_unwind_opcode): Correct formatting.
    • Maciej W. Rozycki's avatar
      MIPS/BFD: Keep EI_ABIVERSION setting together · 334cd8a7
      Maciej W. Rozycki authored
      Shuffle code in `_bfd_mips_post_process_headers' so that the setting of
      the EI_ABIVERSION ELF file header field is complete before calling
      `_bfd_elf_post_process_headers'.  This used to be the case, but was
      changed with commit 351cdf24 ("[MIPS] Implement O32 FPXX, FP64 and
      FP64A ABI extensions") for no reason.
      	* elfxx-mips.c (_bfd_mips_post_process_headers): Keep
      	EI_ABIVERSION setting together.
    • Maciej W. Rozycki's avatar
      MIPS/BFD: Use enumeration constants for EI_ABIVERSION · bb29b84d
      Maciej W. Rozycki authored
      Define enumeration constants based on generated `libc-abis.h' from GNU
      libc, adding a MIPS_ prefix as these are port-specific.  Use them to
      replace magic numbers stored in the EI_ABIVERSION field of the ELF file
      	(MIPS_LIBC_ABI_MAX): New enumeration constants.
      	(_bfd_mips_post_process_headers): Use them in place of magic
    • Jim Wilson's avatar
      RISC-V: Fix 3 PIE related ld testsuite failures. · 25eb8346
      Jim Wilson authored
      	* elfnn-riscv.c (riscv_elf_finish_dynamic_symbol): Update comment.
      	Use SYMBOL_REFERENCES_LOCAL.  Add asserts for h->got.offset.
    • Pedro Alves's avatar
      Use thread_info and inferior pointers more throughout · 00431a78
      Pedro Alves authored
      This is more preparation bits for multi-target support.
      In a multi-target scenario, we need to address the case of different
      processes/threads running on different targets that happen to have the
      same PID/PTID.  E.g., we can have both process 123 in target 1, and
      process 123 in target 2, while they're in reality different processes
      running on different machines.  Or maybe we've loaded multiple
      instances of the same core file.  Etc.
      To address this, in my WIP multi-target branch, threads and processes
      are uniquely identified by the (process_stratum target_ops *, ptid_t)
      and (process_stratum target_ops *, pid) tuples respectively.  I.e.,
      each process_stratum instance has its own thread/process number space.
      As you can imagine, that requires passing around target_ops * pointers
      in a number of functions where we're currently passing only a ptid_t
      or an int.  E.g., when we look up a thread_info object by ptid_t in
      find_thread_ptid, the ptid_t alone isn't sufficient.
      In many cases though, we already have the thread_info or inferior
      pointer handy, but we "lose" it somewhere along the call stack, only
      to look it up again by ptid_t/pid.  Since thread_info or inferior
      objects know their parent target, if we pass around thread_info or
      inferior pointers when possible, we avoid having to add extra
      target_ops parameters to many functions, and also, we eliminate a
      number of by ptid_t/int lookups.
      So that's what this patch does.  In a bit more detail:
      - Changes a number of functions and methods to take a thread_info or
        inferior pointer instead of a ptid_t or int parameter.
      - Changes a number of structure fields from ptid_t/int to inferior or
        thread_info pointers.
      - Uses the inferior_thread() function whenever possible instead of
      - Uses thread_info pointers directly when possible instead of the
        is_running/is_stopped etc. routines that require a lookup.
      - A number of functions are eliminated along the way, such as:
        int valid_gdb_inferior_id (int num);
        int pid_to_gdb_inferior_id (int pid);
        int gdb_inferior_id_to_pid (int num);
        int in_inferior_list (int pid);
      - A few structures and places hold a thread_info pointer across
        inferior execution, so now they take a strong reference to the
        (refcounted) thread_info object to avoid the thread_info pointer
        getting stale.  This is done in enable_thread_stack_temporaries and
        in the infcall.c code.
      - Related, there's a spot in infcall.c where using a RAII object to
        handle the refcount would be handy, so a gdb::ref_ptr specialization
        for thread_info is added (thread_info_ref, in gdbthread.h), along
        with a gdb_ref_ptr policy that works for all refcounted_object types
        (in common/refcounted-object.h).
      2018-06-21  Pedro Alves  <palves@redhat.com>
      	* ada-lang.h (ada_get_task_number): Take a thread_info pointer
      	instead of a ptid_t.  All callers adjusted.
      	* ada-tasks.c (ada_get_task_number): Likewise.  All callers
      	(print_ada_task_info, display_current_task_id, task_command_1):
      	* breakpoint.c (watchpoint_in_thread_scope): Adjust to use
      	(breakpoint_kind): Adjust.
      	(remove_breakpoints_pid): Rename to ...
      	(remove_breakpoints_inf): ... this.  Adjust to take an inferior
      	pointer.  All callers adjusted.
      	(bpstat_clear_actions): Use inferior_thread.
      	(get_bpstat_thread): New.
      	(bpstat_do_actions): Use it.
      	(bpstat_check_breakpoint_conditions, bpstat_stop_status): Adjust
      	to take a thread_info pointer.  All callers adjusted.
      	(set_longjmp_breakpoint_for_call_dummy, set_momentary_breakpoint)
      	(breakpoint_re_set_thread): Use inferior_thread.
      	* breakpoint.h (struct inferior): Forward declare.
      	(bpstat_stop_status): Update.
      	(remove_breakpoints_pid): Delete.
      	(remove_breakpoints_inf): New.
      	* bsd-uthread.c (bsd_uthread_target::wait)
      	(bsd_uthread_target::update_thread_list): Use find_thread_ptid.
      	* btrace.c (btrace_add_pc, btrace_enable, btrace_fetch)
      	(maint_btrace_clear_packet_history_cmd): Adjust.
      	(maint_btrace_clear_cmd, maint_info_btrace_cmd): Adjust to use
      	* cli/cli-interp.c: Include "inferior.h".
      	* common/refcounted-object.h (struct
      	refcounted_object_ref_policy): New.
      	* compile/compile-object-load.c: Include gdbthread.h.
      	(store_regs): Use inferior_thread.
      	* corelow.c (core_target::close): Use current_inferior.
      	(core_target_open): Adjust to use first_thread_of_inferior and use
      	the current inferior.
      	* ctf.c (ctf_target::close): Adjust to use current_inferior.
      	* dummy-frame.c (dummy_frame_id) <ptid>: Delete, replaced by ...
      	<thread>: ... this new field.  All references adjusted.
      	(dummy_frame_pop, dummy_frame_discard, register_dummy_frame_dtor):
      	Take a thread_info pointer instead of a ptid_t.
      	* dummy-frame.h (dummy_frame_push, dummy_frame_pop)
      	(dummy_frame_discard, register_dummy_frame_dtor): Take a
      	thread_info pointer instead of a ptid_t.
      	* elfread.c: Include "inferior.h".
      	(elf_gnu_ifunc_resolver_stop, elf_gnu_ifunc_resolver_return_stop):
      	Use inferior_thread.
      	* eval.c (evaluate_subexp): Likewise.
      	* frame.c (frame_pop, has_stack_frames, find_frame_sal): Use
      	* gdb_proc_service.h (struct thread_info): Forward declare.
      	(struct ps_prochandle) <ptid>: Delete, replaced by ...
      	<thread>: ... this new field.  All references adjusted.
      	* gdbarch.h, gdbarch.c: Regenerate.
      	* gdbarch.sh (get_syscall_number): Replace 'ptid' parameter with a
      	'thread' parameter.  All implementations and callers adjusted.
      	* gdbthread.h (thread_info) <set_running>: New method.
      	(delete_thread, delete_thread_silent): Take a thread_info pointer
      	instead of a ptid.
      	(global_thread_id_to_ptid, ptid_to_global_thread_id): Delete.
      	(first_thread_of_process): Delete, replaced by ...
      	(first_thread_of_inferior): ... this new function.  All callers
      	(any_live_thread_of_process): Delete, replaced by ...
      	(any_live_thread_of_inferior): ... this new function.  All callers
      	(switch_to_thread, switch_to_no_thread): Declare.
      	(is_executing): Delete.
      	(enable_thread_stack_temporaries): Update comment.
      	<enable_thread_stack_temporaries>: Take a thread_info pointer
      	instead of a ptid_t.  Incref the thread.
      	<~enable_thread_stack_temporaries>: Decref the thread.
      	<m_ptid>: Delete
      	<m_thr>: New.
      	(thread_stack_temporaries_enabled_p, push_thread_stack_temporary)
      	(value_in_thread_stack_temporaries, can_access_registers_thread):
      	Take a thread_info pointer instead of a ptid_t.  All callers
      	* infcall.c (get_call_return_value): Use inferior_thread.
      	(run_inferior_call): Work with thread pointers instead of ptid_t.
      	(call_function_by_hand_dummy): Work with thread pointers instead
      	of ptid_t.  Use thread_info_ref.
      	* infcmd.c (proceed_thread_callback): Access thread's state
      	(ensure_valid_thread, ensure_not_running): Use inferior_thread,
      	access thread's state directly.
      	(continue_command): Use inferior_thread.
      	(info_program_command): Use find_thread_ptid and access thread
      	state directly.
      	(proceed_after_attach_callback): Use thread state directly.
      	(notice_new_inferior): Take a thread_info pointer instead of a
      	ptid_t.  All callers adjusted.
      	(exit_inferior): Take an inferior pointer instead of a pid.  All
      	callers adjusted.
      	(exit_inferior_silent): New.
      	(detach_inferior): Delete.
      	(valid_gdb_inferior_id, pid_to_gdb_inferior_id)
      	(gdb_inferior_id_to_pid, in_inferior_list): Delete.
      	(detach_inferior_command, kill_inferior_command): Use
      	find_inferior_id instead of valid_gdb_inferior_id and
      	(inferior_command): Use inferior and thread pointers.
      	* inferior.h (struct thread_info): Forward declare.
      	(notice_new_inferior): Take a thread_info pointer instead of a
      	ptid_t.  All callers adjusted.
      	(detach_inferior): Delete declaration.
      	(exit_inferior, exit_inferior_silent): Take an inferior pointer
      	instead of a pid.  All callers adjusted.
      	(gdb_inferior_id_to_pid, pid_to_gdb_inferior_id, in_inferior_list)
      	(valid_gdb_inferior_id): Delete.
      	* infrun.c (follow_fork_inferior, proceed_after_vfork_done)
      	(handle_vfork_child_exec_or_exit, follow_exec): Adjust.
      	(struct displaced_step_inferior_state) <pid>: Delete, replaced by
      	<inf>: ... this new field.
      	<step_ptid>: Delete, replaced by ...
      	<step_thread>: ... this new field.
      	(get_displaced_stepping_state): Take an inferior pointer instead
      	of a pid.  All callers adjusted.
      	(displaced_step_in_progress_any_inferior): Adjust.
      	(displaced_step_in_progress_thread): Take a thread pointer instead
      	of a ptid_t.  All callers adjusted.
      	(displaced_step_in_progress, add_displaced_stepping_state): Take
      	an inferior pointer instead of a pid.  All callers adjusted.
      	(get_displaced_step_closure_by_addr): Adjust.
      	(remove_displaced_stepping_state): Take an inferior pointer
      	instead of a pid.  All callers adjusted.
      	(displaced_step_prepare_throw, displaced_step_prepare)
      	(displaced_step_fixup): Take a thread pointer instead of a ptid_t.
      	All callers adjusted.
      	(start_step_over): Adjust.
      	(infrun_thread_ptid_changed): Remove bit updating ptids in the
      	displaced step queue.
      	(do_target_resume): Adjust.
      	(fetch_inferior_event): Use inferior_thread.
      	(context_switch, get_inferior_stop_soon): Take an
      	execution_control_state pointer instead of a ptid_t.  All callers
      	(switch_to_thread_cleanup): Delete.
      	(stop_all_threads): Use scoped_restore_current_thread.
      	* inline-frame.c: Include "gdbthread.h".
      	(inline_state) <inline_state>: Take a thread pointer instead of a
      	ptid_t.  All callers adjusted.
      	<ptid>: Delete, replaced by ...
      	<thread>: ... this new field.
      	(find_inline_frame_state): Take a thread pointer instead of a
      	ptid_t.  All callers adjusted.
      	(skip_inline_frames, step_into_inline_frame)
      	(inline_skipped_frames, inline_skipped_symbol): Take a thread
      	pointer instead of a ptid_t.  All callers adjusted.
      	* inline-frame.h (skip_inline_frames, step_into_inline_frame)
      	(inline_skipped_frames, inline_skipped_symbol): Likewise.
      	* linux-fork.c (delete_checkpoint_command): Adjust to use thread
      	pointers directly.
      	* linux-nat.c (get_detach_signal): Likewise.
      	* linux-thread-db.c (thread_from_lwp): New 'stopped' parameter.
      	(thread_db_notice_clone): Adjust.
      	(thread_db_find_new_threads_2, thread_db_find_new_threads_1): Take
      	a thread pointer instead of a ptid_t.  All callers adjusted.
      	* mi/mi-cmd-var.c: Include "inferior.h".
      	(mi_cmd_var_update_iter): Update to use thread pointers.
      	* mi/mi-interp.c (mi_new_thread): Update to use the thread's
      	inferior directly.
      	(mi_output_running_pid, mi_inferior_count): Delete, bits factored
      	out to ...
      	(mi_output_running): ... this new function.
      	(mi_on_resume_1): Adjust to use it.
      	(mi_user_selected_context_changed): Adjust to use inferior_thread.
      	* mi/mi-main.c (proceed_thread): Adjust to use thread pointers
      	(interrupt_thread_callback): : Adjust to use thread and inferior
      	* proc-service.c: Include "gdbthread.h".
      	(ps_pglobal_lookup): Adjust to use the thread's inferior directly.
      	* progspace-and-thread.c: Include "inferior.h".
      	* progspace.c: Include "inferior.h".
      	* python/py-exitedevent.c (create_exited_event_object): Adjust to
      	hold a reference to an inferior_object.
      	* python/py-finishbreakpoint.c (bpfinishpy_init): Adjust to use
      	* python/py-inferior.c (struct inferior_object): Give the type a
      	tag name instead of a typedef.
      	(python_on_normal_stop): No need to check if the current thread is
      	(inferior_to_inferior_object): Change return type to
      	inferior_object.  All callers adjusted.
      	(find_thread_object): Delete, bits factored out to ...
      	(thread_to_thread_object): ... this new function.
      	* python/py-infthread.c (create_thread_object): Use
      	(thpy_is_stopped): Use thread pointer directly.
      	(gdbpy_selected_thread): Use inferior_thread.
      	* python/py-record-btrace.c (btpy_list_object) <ptid>: Delete
      	field, replaced with ...
      	<thread>: ... this new field.  All users adjusted.
      	(btpy_insn_or_gap_new): Drop const.
      	(btpy_list_new): Take a thread pointer instead of a ptid_t.  All
      	callers adjusted.
      	* python/py-record.c: Include "gdbthread.h".
      	(recpy_insn_new, recpy_func_new): Take a thread pointer instead of
      	a ptid_t.  All callers adjusted.
      	(gdbpy_current_recording): Use inferior_thread.
      	* python/py-record.h (recpy_record_object) <ptid>: Delete
      	field, replaced with ...
      	<thread>: ... this new field.  All users adjusted.
      	(recpy_element_object) <ptid>: Delete
      	field, replaced with ...
      	<thread>: ... this new field.  All users adjusted.
      	(recpy_insn_new, recpy_func_new): Take a thread pointer instead of
      	a ptid_t.  All callers adjusted.
      	* python/py-threadevent.c: Include "gdbthread.h".
      	(get_event_thread): Use thread_to_thread_object.
      	* python/python-internal.h (struct inferior_object): Forward
      	(find_thread_object, find_inferior_object): Delete declarations.
      	(thread_to_thread_object, inferior_to_inferior_object): New
      	* record-btrace.c: Include "inferior.h".
      	(require_btrace_thread): Use inferior_thread.
      	(record_btrace_tailcall_frame_sniffer): Use inferior_thread.
      	(get_thread_current_frame): Use scoped_restore_current_thread and
      	(get_thread_current_frame): Use thread pointer directly.
      	(record_btrace_replay_at_breakpoint): Use thread's inferior
      	pointer directly.
      	* record-full.c: Include "inferior.h".
      	* regcache.c: Include "gdbthread.h".
      	(get_thread_arch_regcache): Use the inferior's address space
      	(get_thread_regcache, registers_changed_thread): New.
      	* regcache.h (get_thread_regcache(thread_info *thread)): New
      	(registers_changed_thread): New.
      	(remote_target) <remote_detach_1>: Swap order of parameters.
      	(remote_add_thread): <remote_add_thread>: Return the new thread.
      	(get_remote_thread_info(ptid_t)): New overload.
      	(remote_target::remote_notice_new_inferior): Use thread pointers
      	(remote_target::process_initial_stop_replies): Use
      	(remote_target::remote_detach_1, remote_target::detach)
      	(extended_remote_target::detach): Adjust.
      	* stack.c (frame_show_address): Use inferior_thread.
      	* target-debug.h (target_debug_print_thread_info_pp): New.
      	* target-delegates.c: Regenerate.
      	* target.c (default_thread_address_space): Delete.
      	(memory_xfer_partial_1): Use current_inferior.
      	(target_detach): Use current_inferior.
      	(target_thread_address_space): Delete.
      	(generic_mourn_inferior): Use current_inferior.
      	* target.h (struct target_ops) <thread_address_space>: Delete.
      	(target_thread_address_space): Delete.
      	* thread.c (init_thread_list): Use ALL_THREADS_SAFE.  Use thread
      	pointers directly.
      	(delete_thread_1, delete_thread, delete_thread_silent): Take a
      	thread pointer instead of a ptid_t.  Adjust all callers.
      	(ptid_to_global_thread_id, global_thread_id_to_ptid): Delete.
      	(first_thread_of_process): Delete, replaced by ...
      	(first_thread_of_inferior): ... this new function.  All callers
      	(any_thread_of_process): Rename to ...
      	(any_thread_of_inferior): ... this, and take an inferior pointer.
      	(any_live_thread_of_process): Rename to ...
      	(any_live_thread_of_inferior): ... this, and take an inferior
      	(thread_stack_temporaries_enabled_p, push_thread_stack_temporary)
      	(get_last_thread_stack_temporary): Take a thread pointer instead
      	of a ptid_t.  Adjust all callers.
      	(thread_info::set_running): New.
      	(validate_registers_access): Use inferior_thread.
      	(can_access_registers_ptid): Rename to ...
      	(can_access_registers_thread): ... this, and take a thread
      	(print_thread_info_1): Adjust to compare thread pointers instead
      	of ptids.
      	(switch_to_no_thread, switch_to_thread): Make extern.
      	Use m_thread pointer directly.
      	Use inferior_thread.
      	(thread_command): Use thread pointer directly.
      	(thread_num_make_value_helper): Use inferior_thread.
      	* top.c (execute_command): Use inferior_thread.
      	* tui/tui-interp.c: Include "inferior.h".
      	* varobj.c (varobj_create): Use inferior_thread.
      	(value_of_root_1): Use find_thread_global_id instead of
    • Alan Hayward's avatar
      Avoid memcpys in regcache read_part/write_part for full registers. · 33bab475
      Alan Hayward authored
      Additionally, tidy up the functions: Remove asserts, use gdb_byte,
      update comments.
      	* regcache.c (readable_regcache::read_part): Avoid memcpy when
      	(regcache::write_part): Likewise.
      	(readable_regcache::cooked_read_part): Update comment.
      	(readable_regcache::cooked_write_part): Likewise.
      	* regcache.h: (readable_regcache::read_part): Likewise.
      	(regcache::write_part): Likewise.
    • Alan Modra's avatar
      Regen doc/Makefile.in · d388f643
      Alan Modra authored
      Also make the automake strictness "foreign".  My regeneration of the
      three doc/Makefile.in files already had --foreign in the automake
      invocation, so this just makes it explicit.
      	* doc/Makefile.am (AUTOMAKE_OPTIONS): Add "foreign".
      	* doc/Makefile.in: Regenerate.
      	* doc/Makefile.am (AUTOMAKE_OPTIONS): Add "foreign".
      	* doc/Makefile.in: Regenerate.
      	* doc/Makefile.am (AUTOMAKE_OPTIONS): Add "foreign".
      	* doc/Makefile.in: Regenerate.
      	* Makefile.in: Regenerate.
    • Richard Bunt's avatar
      Enable hardware watchpoints on attach for aarch64 · 8363f9d5
      Richard Bunt authored
      This commit fixes a bug whereby hardware watchpoints are not used on
      aarch64 when attaching to a target. The fix adds an aarch64 specialization
      of post_attach which records the number of available hardware debug registers
      using aarch64_linux_get_debug_reg_capacity. This implementation mirrors that
      of aarch64_linux_child_post_startup_inferior which successfully enables the
      use of hardware watchpoints when launching the target under the debugger.
      	* aarch64-linux-nat.c (post_attach): New.
      	(aarch64_linux_nat_target::post_attach): Override post_attach to
      	record the number of hardware debug registers.
      	* gdb.base/watchpoint-hw-attach.c: New test.
      	* gdb.base/watchpoint-hw-attach.exp: New file.
    • Alan Hayward's avatar
      Use offsets instead of addresses in ELF_SECTION_IN_SEGMENT for non SHT_NOBITS · 57c0d77c
      Alan Hayward authored
      For sections that are not SHT_NOBITS, use sh_offset and p_offset instead of
      sh_addr and p_vaddr when calculating if a section fits in a segment. Both
      methods are valid when using the GNU linker.
      	* elf/internal.h (ELF_SECTION_IN_SEGMENT): Don’t check addresses
      	for non SHT_NOBITS.