1. 21 Jun, 2018 10 commits
    • 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.
      
      	bfd/
      	* elfxx-mips.c (_bfd_mips_post_process_headers): Keep
      	EI_ABIVERSION setting together.
      334cd8a7
    • 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
      header.
      
      	bfd/
      	* elfxx-mips.c (MIPS_LIBC_ABI_DEFAULT, MIPS_LIBC_ABI_MIPS_PLT)
      	(MIPS_LIBC_ABI_UNIQUE, MIPS_LIBC_ABI_MIPS_O32_FP64)
      	(MIPS_LIBC_ABI_MAX): New enumeration constants.
      	(_bfd_mips_post_process_headers): Use them in place of magic
      	numbers.
      bb29b84d
    • Jim Wilson's avatar
      RISC-V: Fix 3 PIE related ld testsuite failures. · 25eb8346
      Jim Wilson authored
      	bfd/
      	* elfnn-riscv.c (riscv_elf_finish_dynamic_symbol): Update comment.
      	Use SYMBOL_REFERENCES_LOCAL.  Add asserts for h->got.offset.
      25eb8346
    • 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
        inferior_ptid.
      
      - 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).
      
      gdb/ChangeLog:
      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
      	adjusted.
      	(print_ada_task_info, display_current_task_id, task_command_1):
      	Adjust.
      	* breakpoint.c (watchpoint_in_thread_scope): Adjust to use
      	inferior_thread.
      	(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_packet_history_cmd)
      	(maint_btrace_clear_packet_history_cmd): Adjust.
      	(maint_btrace_clear_cmd, maint_info_btrace_cmd): Adjust to use
      	inferior_thread.
      	* 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
      	inferior_thread.
      	* 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
      	adjusted.
      	(any_live_thread_of_process): Delete, replaced by ...
      	(any_live_thread_of_inferior): ... this new function.  All callers
      	adjusted.
      	(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)
      	(get_last_thread_stack_temporary)
      	(value_in_thread_stack_temporaries, can_access_registers_thread):
      	Take a thread_info pointer instead of a ptid_t.  All callers
      	adjusted.
      	* 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
      	directly.
      	(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
      	gdb_inferior_id_to_pid.
      	(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
      	adjusted.
      	(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_silently)
      	(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
      	directly.
      	(interrupt_thread_callback): : Adjust to use thread and inferior
      	pointers.
      	* 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
      	inferior_thread.
      	* 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
      	listed.
      	(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
      	inferior_to_inferior_object.
      	(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
      	declare.
      	(find_thread_object, find_inferior_object): Delete declarations.
      	(thread_to_thread_object, inferior_to_inferior_object): New
      	declarations.
      	* record-btrace.c: Include "inferior.h".
      	(require_btrace_thread): Use inferior_thread.
      	(record_btrace_frame_sniffer)
      	(record_btrace_tailcall_frame_sniffer): Use inferior_thread.
      	(get_thread_current_frame): Use scoped_restore_current_thread and
      	switch_to_thread.
      	(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
      	directly.
      	(get_thread_regcache, registers_changed_thread): New.
      	* regcache.h (get_thread_regcache(thread_info *thread)): New
      	overload.
      	(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
      	directly.
      	(remote_target::process_initial_stop_replies): Use
      	thread_info::set_running.
      	(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
      	adjusted.
      	(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
      	pointer.
      	(thread_stack_temporaries_enabled_p, push_thread_stack_temporary)
      	(value_in_thread_stack_temporaries)
      	(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
      	pointer.
      	(print_thread_info_1): Adjust to compare thread pointers instead
      	of ptids.
      	(switch_to_no_thread, switch_to_thread): Make extern.
      	(scoped_restore_current_thread::~scoped_restore_current_thread):
      	Use m_thread pointer directly.
      	(scoped_restore_current_thread::scoped_restore_current_thread):
      	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
      	global_thread_id_to_ptid.
      00431a78
    • 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.
      
      gdb/
      	* regcache.c (readable_regcache::read_part): Avoid memcpy when
      	possible.
      	(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.
      33bab475
    • 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.
      
      bfd/
      	* doc/Makefile.am (AUTOMAKE_OPTIONS): Add "foreign".
      	* doc/Makefile.in: Regenerate.
      binutils/
      	* doc/Makefile.am (AUTOMAKE_OPTIONS): Add "foreign".
      	* doc/Makefile.in: Regenerate.
      gas/
      	* doc/Makefile.am (AUTOMAKE_OPTIONS): Add "foreign".
      	* doc/Makefile.in: Regenerate.
      zlib/
      	* Makefile.in: Regenerate.
      d388f643
    • 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.
      
      gdb/ChangeLog:
      
      	* 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/testsuite/ChangeLog:
      
      	* gdb.base/watchpoint-hw-attach.c: New test.
      	* gdb.base/watchpoint-hw-attach.exp: New file.
      8363f9d5
    • 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.
      
      include/
      	* elf/internal.h (ELF_SECTION_IN_SEGMENT): Don’t check addresses
      	for non SHT_NOBITS.
      57c0d77c
    • Tom Tromey's avatar
      Fix a memory leak in py-param.c · 0d0b0ea2
      Tom Tromey authored
      Mark Wielaard pointed out this memory leak to me:
      
          ==17633== 775 bytes in 1 blocks are definitely lost in loss record 13,346 of 13,967
          ==17633==    at 0x4C2DB6B: malloc (vg_replace_malloc.c:299)
          ==17633==    by 0x6652B7: xmalloc (common-utils.c:45)
          ==17633==    by 0xC4C889: xstrdup (xstrdup.c:34)
          ==17633==    by 0x5A71FD: unicode_to_encoded_string(_object*, char const*) (py-utils.c:81)
          ==17633==    by 0x5A73EB: python_string_to_host_string(_object*) (py-utils.c:158)
          ==17633==    by 0x59CC6C: get_doc_string(_object*, _object*) (py-param.c:334)
          ==17633==    by 0x59D2AA: parmpy_init(_object*, _object*, _object*) (py-param.c:728)
      
      The bug here is that parmpy_init is written as though
      add_setshow_generic takes ownership of its doc-string arguments.
      However, it does not.  This patch fixes the bug in a straightforward
      way and also applies some missing constification to make the problem
      more apparent.
      
      Tested on x86-64 Fedora 26.
      
      gdb/ChangeLog
      2018-06-20  Tom Tromey  <tom@tromey.com>
      
      	* python/py-param.c (add_setshow_generic): Make parameters const.
      	(parmpy_init): Update.
      0d0b0ea2
    • GDB Administrator's avatar
      Automatic date update in version.in · 6ff79ccd
      GDB Administrator authored
      6ff79ccd
  2. 20 Jun, 2018 14 commits
    • Simon Marchi's avatar
      Rename regcache_cooked_read_ftype and make a function_view · 302abd6e
      Simon Marchi authored
      regcache_cooked_read_ftype can be converted to a function_view, which
      allows us to use lambda functions and therefore avoid having to pass an
      opaque pointer parameter.
      
      Adjusting the fallouts showed that the "const regcache &" passed to the
      readonly_detached_regcache constructor is cast to non-const in
      do_cooked_read.  I changed the constructor parameter to be non-const.
      
      Finally, I renamed the typedef from regcache_cooked_read_ftype to
      register_read_ftype, since there is nothing that forces us to use it
      only for regcaches nor cooked registers.
      
      gdb/ChangeLog:
      
      	* regcache.h (regcache_cooked_read_ftype): Rename to...
      	(register_read_ftype): ...this, change type to function_view.
      	(class reg_buffer) <save>: Remove src parameter.
      	(readonly_detached_regcache) <readonly_detached_regcache>: Make
      	parameter non-const in first overload.  Remove src parameter in
      	second overload.
      	* regcache.c (do_cooked_read): Remove.
      	(readonly_detached_regcache::readonly_detached_regcache): Make
      	parameter non-const, adjust call to other constructor.
      	(reg_buffer::save): Remove src parameter.
      	* frame.c (do_frame_register_read): Remove.
      	(frame_save_as_regcache): Use lambda function.
      	* ppc-linux-tdep.c (ppu2spu_unwind_register): Change type of src
      	parameter to ppu2spu_data *.
      	(ppu2spu_sniffer): Use lambda function.
      302abd6e
    • Simon Marchi's avatar
      testsuite: Fix cc-with-tweaks.sh being executed in the wrong shell · f00674fe
      Simon Marchi authored
      The cc-with-tweaks.sh script needs to be executed with bash.  When
      trying to run this:
      
        make check RUNTESTFLAGS="--target_board=dwarf4-gdb-index" TESTS="gdb.base/return.exp"
      
      I get:
      
        gdb compile failed, /home/emaisin/src/binutils-gdb/gdb/contrib/cc-with-tweaks.sh: 174: /home/emaisin/src/binutils-gdb/gdb/contrib/cc-with-tweaks.sh: Bad substitution
      
      The reason is that the board files execute cc-with-tweaks.sh using
      /bin/sh, which points to dash on my machine.  Remove the /bin/sh part
      and let the shebang choose the right interpreter.
      
      gdb/testsuite/ChangeLog:
      
      	* boards/cc-with-tweaks.exp: Don't call cc-with-tweaks.sh
      	through /bin/sh.
      	* boards/dwarf4-gdb-index.exp: Likewise.
      	* boards/fission-dwp.exp: Likewise.
      f00674fe
    • Simon Marchi's avatar
      Remove struct keyword in range-based for-loop · 19f3f25f
      Simon Marchi authored
      Fix this with gcc 6.3.0, and make the loop variable const while at it:
      
      /home/simark/src/binutils-gdb/gdb/record-full.c: In member function 'virtual int record_full_target::insert_breakpoint(gdbarch*, bp_target_info*)':
      /home/simark/src/binutils-gdb/gdb/record-full.c:1789:8: error: types may not be defined in a for-range-declaration [-Werror]
         for (struct record_full_breakpoint &bp : record_full_breakpoints)
      
      gdb/ChangeLog:
      
      	* record-full.c (record_full_target::insert_breakpoint): Remove
      	"struct" keyword, add const.
      19f3f25f
    • Nick Clifton's avatar
      Fix potential illegal memroy access when using a build-id note with a negative size. · 6077de06
      Nick Clifton authored
      	PR 23316
      	* opncls.c (get_build_id): Check for a negative or excessive data
      	size in the build-id note.
      6077de06
    • Ulrich Weigand's avatar
      Improve gdb.base/float128.exp failure message · 1d554008
      Ulrich Weigand authored
      If the "print large128" sub-test fails in a manner that typically
      indicates internal overflow due to GDB being built without MPFR
      support, explicitly state this in the failure message.
      
      gdb/testsuite/ChangeLog:
      2018-06-20  Ulrich Weigand  <uweigand@de.ibm.com>
      
      	* gdb.base/float128.exp: Add comment and improved fail message
      	to the failure case of "print large128" test.
      1d554008
    • Renlin Li's avatar
      [BFD][AARCH64]Properly truncate no overflow checking relocation value for load/store immediate. · b939d8a0
      Renlin Li authored
      bfd/ChangeLog:
      
      2018-06-20  Renlin Li  <renlin.li@arm.com>
      
      	* elfxx-aarch64.c (_bfd_aarch64_elf_resolve_relocation): Use PG_OFFSET
      	to resolve BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC,
      	BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC,
      	BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC,
      	BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC,
      	BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC,
      	BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC,
      	BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC,
      	BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC.
      
      ld/ChangeLog:
      
      2018-06-20 Renlin Li  <renlin.li@arm.com>
      
      	* testsuite/ld-aarch64/emit-relocs-115.d: Update test with new value.
      	* testsuite/ld-aarch64/emit-relocs-534.d: Likewise.
      	* testsuite/ld-aarch64/emit-relocs-555.d: Likewise.
      b939d8a0
    • Nick Clifton's avatar
      Change the ARM assembler's ADR and ADRl pseudo-ops so that they will only set... · fc6141f0
      Nick Clifton authored
      Change the ARM assembler's ADR and ADRl pseudo-ops so that they will only set the bottom bit of imported thumb function symbols if the -mthumb-interwork option is active.
      
      For more information see the email thread starting here:
      https://www.sourceware.org/ml/binutils/2018-05/msg00348.html
      
      	PR 21458
      	* tc-arm.c (do_adr): Only set the bottom bit of an imported thumb
      	function symbol address if -mthumb-interwork is active.
      	(do_adrl): Likewise.
      	* doc/c-arm.texi: Update descriptions of the -mthumb-interwork
      	option and the ADR and ADRL pseudo-ops.
      	* NEWS: Mention the new behaviour of the ADR and ADRL pseudo-ops.
      	* testsuite/gas/arm/pr21458.d: Add -mthumb-interwork option to
      	assembler command line.
      	* testsuite/gas/arm/adr.d: Likewise.
      	* testsuite/gas/arm/adrl.d: Likewise.
      fc6141f0
    • Nick Clifton's avatar
      Stop objcopy from corrupting mach-o files. · c6643fcc
      Nick Clifton authored
      	PR 23299
      	* mach-o.c (cputype): New function.
      	(cpusubtype): New function.
      	(bfd_mach_o_bfd_print_private_data): New function.  Dispalys the
      	values in the MACH-O file header.
      	(bfd_mach_o_bfd_copy_private_header_data): Copy the cputype and
      	cpusubtype fields from the input bfd's mach-o header to the output
      	bfd.
      	* mach-o-target.c (bfd_mach_o_bfd_print_private_bfd_data):
      	Redefine to bfd_mach_o_bfd_print_private_data.
      	* mach-o.h (bfd_mach_o_bfd_print_private_bfd_data): Prototype.
      c6643fcc
    • Cary Coutant's avatar
      Fix problem where gold does not create base version for executables. · ebb13322
      Cary Coutant authored
      gold/
      	PR gold/23268
      	* dynobj.cc (Versions::Versions): Change init for needs_base_version_.
      	(Versions::record_version): Add verdefs for both shared objects and
      	executables.
      	(Versions::add_def): Likewise for base version.
      	(Versions::add_need): Don't add base version for executables.
      	(Versions::version_index): Look up version for both shared objects and
      	executables.
      	* testsuite/Makefile.am (ver_test_14): New test case.
      	* testsuite/Makefile.in: Regenerate.
      	* testsuite/ver_test_14.script: New version script.
      	* testsuite/ver_test_14.sh: New test script.
      ebb13322
    • Sebastian Huber's avatar
      RISC-V: Accept constant operands in la and lla · 160d1b3d
      Sebastian Huber authored
      opcodes/
      	PR gas/23305
      	* riscv-opc.c (riscv_opcodes): Use new format specifier 'B' for
      	la and lla.
      
      gas/
      	PR gas/23305
      	* config/tc-riscv.c (riscv_ip): Add format specifier 'B' for
      	constants and symbols.
      	* testsuite/gas/riscv/lla32.d: New file.
      	* testsuite/gas/riscv/lla32.s: Likewise.
      	* testsuite/gas/riscv/lla64-fail.d: Likewise.
      	* testsuite/gas/riscv/lla64-fail.l: Likewise.
      	* testsuite/gas/riscv/lla64-fail.s: Likewise.
      	* testsuite/gas/riscv/lla64.d: Likewise.
      	* testsuite/gas/riscv/lla64.s: Likewise.
      160d1b3d
    • Cary Coutant's avatar
      Fix typo in most recent entry. · 4ef2c1b9
      Cary Coutant authored
      4ef2c1b9
    • Cary Coutant's avatar
      Replace thread config with automatic config using ax_pthread.m4. · c8dc28bc
      Cary Coutant authored
      The autotools library macro (AX_PTHREAD) is now used to detect if
      pthreads is present and multi-threaded linking in gold is automatically
      enabled if it is found. This enables multi-threaded gold on platforms
      where pthreads is enabled via other methods than just -lpthread
      (e.g., MinGW).
      
      2018-06-19  Joshua Watt  <jpewhacker@gmail.com>
      	    Cary Coutant  <ccoutant@gmail.com>
      
      gold/
      	* configure.ac: Replace manual thread configuration with AX_PTHREAD.
      	Add --enable-threads=auto.
      	* Makefile.am (THREADFLAGS, THREADLIBS): New defines.
      	(AM_CFLAGS, AM_CXXFLAGS): Add $(THREADFLAGS.
      	(THREADSLIB): Remove; change all references to THREADLIBS.
      	* Makefile.in: Regenerate.
      	* aclocal.m4: Regenerate.
      	* config.in: Regenerate.
      	* configure: Regenerate.
      	* testsuite/Makefile.am (THREADSLIB): Replace with...
      	(THREADFLAGS, THREADLIBS): ... these.
      	(LDADD): Remove; add as individual defines for...
      	(object_unittest, binary_unittest, leb128_unittest)
      	(overflow_unittest): ... these tests.
      	(tls_test, tls_pic_test, tls_pie_test, tls_pie_pic_test)
      	(tls_shared_test, tls_shared_ie_test, tls_shared_gd_to_ie_test)
      	(tls_shared_gnu2_gd_to_ie_test, tls_shared_gnu2_test_LDFLAGS)
      	(tls_shared_nonpic_test_LDFLAGS): Add $(THREADFLAGS) and ($THREADLIBS).
      	* testsuite/Makefile.in: Regenerate.
      c8dc28bc
    • Cary Coutant's avatar
      Remove *.stderr when "make clean". · 27ab0424
      Cary Coutant authored
      gold/
      	* testsuite/Makefile.am (MOSTLYCLEANFILES): Add *.stderr.
      	* testsuite/Makefile.in: Regenerate.
      27ab0424
    • GDB Administrator's avatar
      Automatic date update in version.in · 7c69913e
      GDB Administrator authored
      7c69913e
  3. 19 Jun, 2018 11 commits
    • Maciej W. Rozycki's avatar
      PR ld/22966: Fix n64 MIPS `.got.plt' range checks · 789ff5b6
      Maciej W. Rozycki authored
      The addressable signed 32-bit range for n64 MIPS `.got.plt' references
      is from 0xffffffff7fff8000 to 0x7fff7fff, due to how the composition of
      an LUI and an LD instruction works for address calculation in the 64-bit
      addressing mode, such as when CP0.Status.UX=1.
      
      We currently have a range check in `mips_finish_exec_plt', however it is
      not correct as it verifies that the `.got.plt' start address referred is
      between 0xffffffff80000000 and 0x7fffffff.  It is also implemented as an
      assertion rather than a proper error message despite that the situation
      can be triggered by user input.  Additionally there is no check made for
      individual `.got.plt' entries referred even though they can be out of
      range while the `.got.plt' start address is not.
      
      Fix all these problems and use the correct range for the check, limiting
      it to n64 output files, and then issue a proper error message both in
      `mips_finish_exec_plt' and in `_bfd_mips_elf_finish_dynamic_symbol',
      suggesting the use of the `-Ttext-segment=...' option that will often
      work and with the default linker scripts in particular.  Add suitable
      tests covering boundary cases.
      
      	bfd/
      	PR ld/22966
      	* elfxx-mips.c (_bfd_mips_elf_finish_dynamic_symbol): Verify the
      	`.got.plt' entry referred is in range.
      	(mips_finish_exec_plt): Correct the range check for `.got.plt'
      	start.  Replace the assertion used for that with a proper error
      	message.
      
      	ld/
      	PR ld/22966
      	* testsuite/ld-mips-elf/n64-plt-1.dd: New test.
      	* testsuite/ld-mips-elf/n64-plt-1.gd: New test.
      	* testsuite/ld-mips-elf/n64-plt-2.ed: New test.
      	* testsuite/ld-mips-elf/n64-plt-3.ed: New test.
      	* testsuite/ld-mips-elf/n64-plt-4.dd: New test.
      	* testsuite/ld-mips-elf/n64-plt-4.gd: New test.
      	* testsuite/ld-mips-elf/n64-plt-1.ld: New test linker script.
      	* testsuite/ld-mips-elf/n64-plt-2.ld: New test linker script.
      	* testsuite/ld-mips-elf/n64-plt-3.ld: New test linker script.
      	* testsuite/ld-mips-elf/n64-plt-4.ld: New test linker script.
      	* testsuite/ld-mips-elf/n64-plt.s: New test source.
      	* testsuite/ld-mips-elf/n64-plt-lib.s: New test source.
      	* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.
      789ff5b6
    • Maciej W. Rozycki's avatar
      MIPS/BFD: Fix `loc' formatting in `_bfd_mips_elf_finish_dynamic_symbol' · 6a382bce
      Maciej W. Rozycki authored
      Fix a formatting fallout in `_bfd_mips_elf_finish_dynamic_symbol' from
      commit ce558b89 ("Delete duplicate target short-cuts to dynamic
      sections").
      
      	bfd/
      	* elfxx-mips.c (_bfd_mips_elf_finish_dynamic_symbol): Fix
      	formatting.
      6a382bce
    • Maciej W. Rozycki's avatar
      MIPS/LD/testsuite: XFAIL DT_TEXTREL map file warning test · a4eb6927
      Maciej W. Rozycki authored
      Remove:
      
      FAIL: DT_TEXTREL map file warning
      
      introduced with commit 63c1f59d ("readonly_dynrelocs"), coming from
      the lack of a "dynamic relocation against `foo' in read-only section
      `.rodata'" warning message produced.
      
      The cause of the failure is that for sections which have dynamic
      relocations attached the MIPS backend sets SHF_WRITE, in
      `mips_elf_create_dynamic_relocation', yielding:
      
      $ readelf -S textrel.so | grep rodata
        [ 8] .rodata           PROGBITS        00000254 000254 000004 00  WA  0   0  1
      $
      
      so the section is read/write and therefore there is nothing to warn
      about.
      
      This arrangement came from commit 7403cb63 ("PATCH for N32 ABI"),
      <https://sourceware.org/ml/binutils/1999-q2/msg00375.html>, i.e. for all
      practical purposes it has been there since forever, and therefore it can
      be considered a part of the ABI and the test case irrelevant for MIPS
      targets.
      
      We don't have a clean way to request UNSUPPORTED result, which would be
      the most appropriate here, so just XFAIL the test instead.
      
      	ld/
      	* testsuite/ld-elf/shared.exp: XFAIL DT_TEXTREL map file warning
      	test for `mips*-*-*'.
      a4eb6927
    • Simon Marchi's avatar
      Bump to autoconf 2.69 and automake 1.15.1 · d0ac1c44
      Simon Marchi authored
      When trying to run the update-gnulib.sh script in gdb, I get this:
      
      Error: Wrong automake version (Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ([^      =:+{}]+)}/ at /opt/automake/1.11.1/bin/automake line 4113.), we need 1.11.1.
      Aborting.
      
      Apparently, it's an issue with a regex in automake that triggers a
      warning starting with Perl 5.22.  It has been fixed in automake 1.15.1.
      So I think it's a good excuse to bump the versions of autoconf and
      automake used in the gnulib import.  And to avoid requiring multiple
      builds of autoconf/automake, it was suggested that we bump the required
      version of those tools for all binutils-gdb.
      
      For autoconf, the 2.69 version is universally available, so it's an easy
      choice.  For automake, different distros and distro versions have
      different automake versions.  But 1.15.1 seems to be the most readily
      available as a package.  In any case, it's easy to build it from source.
      
      I removed the version checks from AUTOMAKE_OPTIONS and AC_PREREQ,
      because I don't think they are useful in our case.  They only specify a
      lower bound for the acceptable version of automake/autoconf.  That's
      useful if you let the user choose the version of the tool they want to
      use, but want to set a minimum version (because you use a feature that
      was introduced in that version).  In our case, we force people to use a
      specific version anyway.  For the autoconf version, we have the check in
      config/override.m4 that enforces the version we want.  It will be one
      less thing to update next time we change autotools version.
      
      I hit a few categories of problems that required some changes.  They are
      described below along with the chosen solutions.
      
      Problem 1:
      
        configure.ac:17: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated.  For more info, see:
        configure.ac:17: http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
      
      Solution 1:
      
        Adjust the code based on the example at that URL.
      
      Problem 2 (in zlib/):
      
        Makefile.am: error: required file './INSTALL' not found
        Makefile.am:   'automake --add-missing' can install 'INSTALL'
        Makefile.am: error: required file './NEWS' not found
        Makefile.am: error: required file './AUTHORS' not found
        Makefile.am: error: required file './COPYING' not found
        Makefile.am:   'automake --add-missing' can install 'COPYING'
      
      Solution 2:
      
        Add the foreign option to AUTOMAKE_OPTIONS.
      
      Problem 3:
      
        doc/Makefile.am:20: error: support for Cygnus-style trees has been removed
      
      Solution 3:
      
        Remove the cygnus options.
      
      Problem 4:
      
        Makefile.am:656: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
      
      Solution 4:
      
        Rename "INCLUDES = " to "AM_CPPFLAGS += " (because AM_CPPFLAGS is
        already defined earlier).
      
      Problem 5:
      
        doc/Makefile.am:71: warning: suffix '.texinfo' for Texinfo files is discouraged; use '.texi' instead
        doc/Makefile.am: warning: Oops!
        doc/Makefile.am:     It appears this file (or files included by it) are triggering
        doc/Makefile.am:     an undocumented, soon-to-be-removed automake hack.
        doc/Makefile.am:     Future automake versions will no longer place in the builddir
        doc/Makefile.am:     (rather than in the srcdir) the generated '.info' files that
        doc/Makefile.am:     appear to be cleaned, by e.g. being listed in CLEANFILES or
        doc/Makefile.am:     DISTCLEANFILES.
        doc/Makefile.am:     If you want your '.info' files to be placed in the builddir
        doc/Makefile.am:     rather than in the srcdir, you have to use the shiny new
        doc/Makefile.am:     'info-in-builddir' automake option.
      
      Solution 5:
      
        Rename .texinfo files to .texi.
      
      Problem 6:
      
        doc/Makefile.am: warning: Oops!
        doc/Makefile.am:     It appears this file (or files included by it) are triggering
        doc/Makefile.am:     an undocumented, soon-to-be-removed automake hack.
        doc/Makefile.am:     Future automake versions will no longer place in the builddir
        doc/Makefile.am:     (rather than in the srcdir) the generated '.info' files that
        doc/Makefile.am:     appear to be cleaned, by e.g. being listed in CLEANFILES or
        doc/Makefile.am:     DISTCLEANFILES.
        doc/Makefile.am:     If you want your '.info' files to be placed in the builddir
        doc/Makefile.am:     rather than in the srcdir, you have to use the shiny new
        doc/Makefile.am:     'info-in-builddir' automake option.
      
      Solution 6:
      
        Remove the hack at the bottom of doc/Makefile.am and use
        the info-in-builddir automake option.
      
      Problem 7:
      
        doc/Makefile.am:35: error: required file '../texinfo.tex' not found
        doc/Makefile.am:35:   'automake --add-missing' can install 'texinfo.tex'
      
      Solution 7:
      
        Use the no-texinfo.tex automake option.  We also have one in
        texinfo/texinfo.tex, not sure if we should point to that, or move it
        (or a newer version of it added with automake --add-missing) to
        top-level.
      
      Problem 8:
      
        Makefile.am:131: warning: source file 'config/tc-aarch64.c' is in a subdirectory,
        Makefile.am:131: but option 'subdir-objects' is disabled
        automake: warning: possible forward-incompatibility.
        automake: At least a source file is in a subdirectory, but the 'subdir-objects'
        automake: automake option hasn't been enabled.  For now, the corresponding output
        automake: object file(s) will be placed in the top-level directory.  However,
        automake: this behaviour will change in future Automake versions: they will
        automake: unconditionally cause object files to be placed in the same subdirectory
        automake: of the corresponding sources.
        automake: You are advised to start using 'subdir-objects' option throughout your
        automake: project, to avoid future incompatibilities.
      
      Solution 8:
      
        Use subdir-objects, that means adjusting references to some .o that will now
        be in config/.
      
      Problem 9:
      
        configure.ac:375: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body
        ../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
        ../../lib/autoconf/general.m4:2601: _AC_COMPILE_IFELSE is expanded from...
        ../../lib/autoconf/general.m4:2617: AC_COMPILE_IFELSE is expanded from...
        ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
        ../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
        ../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
        configure.ac:375: the top level
      
      Solution 9:
      
        Use AC_LANG_SOURCE, or use proper quoting.
      
      Problem 10 (in intl/):
      
        configure.ac:7: warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
        /usr/share/aclocal/threadlib.m4:36: gl_THREADLIB_EARLY_BODY is expanded from...
        /usr/share/aclocal/threadlib.m4:29: gl_THREADLIB_EARLY is expanded from...
        /usr/share/aclocal/threadlib.m4:318: gl_THREADLIB is expanded from...
        /usr/share/aclocal/lock.m4:9: gl_LOCK is expanded from...
        /usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from...
        /usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from...
        /usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
        configure.ac:7: the top level
      
      Solution 10:
      
        Add AC_USE_SYSTEM_EXTENSIONS in configure.ac.
      
      ChangeLog:
      
      	* libtool.m4: Use AC_LANG_SOURCE.
      	* configure.ac: Remove AC_PREREQ, use AC_LANG_SOURCE.
      	* README-maintainer-mode: Update version requirements.
      	* ar-lib: New file.
      	* test-driver: New file.
      	* configure: Re-generate.
      
      bfd/ChangeLog:
      
      	* Makefile.am (AUTOMAKE_OPTIONS): Remove 1.11.
      	(INCLUDES): Rename to ...
      	(AM_CPPFLAGS): ... this.
      	* configure.ac: Remove AC_PREREQ.
      	* doc/Makefile.am (AUTOMAKE_OPTIONS): Remove 1.9, cygnus, add
      	info-in-builddir no-texinfo.tex.
      	(info_TEXINFOS): Rename bfd.texinfo to bfd.texi.
      	* doc/bfd.texinfo: Rename to ...
      	* doc/bfd.texi: ... this.
      	* Makefile.in: Re-generate.
      	* aclocal.m4: Re-generate.
      	* config.in: Re-generate.
      	* configure: Re-generate.
      	* doc/Makefile.in: Re-generate.
      
      binutils/ChangeLog:
      
      	* configure.ac: Remove AC_PREREQ.
      	* doc/Makefile.am (AUTOMAKE_OPTIONS): Remove cygnus, add
      	info-in-builddir no-texinfo.tex.
      	* Makefile.in: Re-generate.
      	* aclocal.m4: Re-generate.
      	* config.in: Re-generate.
      	* configure: Re-generate.
      	* doc/Makefile.in: Re-generate.
      
      config/ChangeLog:
      
      	* override.m4 (_GCC_AUTOCONF_VERSION): Bump from 2.64 to 2.69.
      
      etc/ChangeLog:
      
      	* configure.in: Remove AC_PREREQ.
      	* configure: Re-generate.
      
      gas/ChangeLog:
      
      	* Makefile.am (AUTOMAKE_OPTIONS): Remove 1.11, add subdir-objects.
      	(TARG_CPU_O, OBJ_FORMAT_O, ATOF_TARG_O): Add config/ prefix.
      	* configure.ac (TARG_CPU_O, OBJ_FORMAT_O, ATOF_TARG_O, emfiles,
      	extra_objects): Add config/ prefix.
      	* doc/as.texinfo: Rename to...
      	* doc/as.texi: ... this.
      	* doc/Makefile.am: Rename as.texinfo to as.texi throughout.
      	Remove DISTCLEANFILES hack.
      	(AUTOMAKE_OPTIONS): Remove 1.8, cygnus, add no-texinfo.tex and
      	info-in-builddir.
      	* Makefile.in: Re-generate.
      	* aclocal.m4: Re-generate.
      	* config.in: Re-generate.
      	* configure: Re-generate.
      	* doc/Makefile.in: Re-generate.
      
      gdb/ChangeLog:
      
      	* common/common-defs.h (PACKAGE_NAME, PACKAGE_VERSION,
      	PACKAGE_STRING, PACKAGE_TARNAME): Undefine.
      	* configure.ac: Remove AC_PREREQ, add missing quoting.
      	* gnulib/configure.ac: Modernize usage of
      	AC_INIT/AM_INIT_AUTOMAKE.  Remove AC_PREREQ.
      	* gnulib/update-gnulib.sh (AUTOCONF_VERSION): Bump to 2.69.
      	(AUTOMAKE_VERSION): Bump to 1.15.1.
      	* configure: Re-generate.
      	* config.in: Re-generate.
      	* aclocal.m4: Re-generate.
      	* gnulib/aclocal.m4: Re-generate.
      	* gnulib/config.in: Re-generate.
      	* gnulib/configure: Re-generate.
      	* gnulib/import/Makefile.in: Re-generate.
      
      gdb/gdbserver/ChangeLog:
      
      	* configure.ac: Remove AC_PREREQ, add missing quoting.
      	* configure: Re-generate.
      	* config.in: Re-generate.
      	* aclocal.m4: Re-generate.
      
      gdb/testsuite/ChangeLog:
      
      	* configure.ac: Remove AC_PREREQ.
      	* configure: Re-generate.
      
      gold/ChangeLog:
      
      	* configure.ac: Remove AC_PREREQ, add missing quoting and usage
      	of AC_LANG_SOURCE.
      	* Makefile.in: Re-generate.
      	* aclocal.m4: Re-generate.
      	* configure: Re-generate.
      	* testsuite/Makefile.in: Re-generate.
      
      gprof/ChangeLog:
      
      	* configure.ac: Remove AC_PREREQ.
      	* Makefile.am: Remove DISTCLEANFILES hack.
      	(AUTOMAKE_OPTIONS): Remove 1.11, add info-in-builddir.
      	* Makefile.in: Re-generate.
      	* aclocal.m4: Re-generate.
      	* configure: Re-generate.
      	* gconfig.in: Re-generate.
      
      intl/ChangeLog:
      
      	* configure.ac: Add AC_USE_SYSTEM_EXTENSIONS, remove AC_PREREQ.
      	* configure: Re-generate.
      	* config.h.in: Re-generate.
      	* aclocal.m4: Re-generate.
      
      ld/ChangeLog:
      
      	* configure.ac: Remove AC_PREREQ.
      	* Makefile.am: Remove DISTCLEANFILES hack, rename ld.texinfo to
      	ld.texi, ldint.texinfo to ldint.texi throughout.
      	(AUTOMAKE_OPTIONS): Add info-in-builddir.
      	* README: Rename ld.texinfo to ld.texi, ldint.texinfo to
      	ldint.texi throughout.
      	* gen-doc.texi: Likewise.
      	* h8-doc.texi: Likewise.
      	* ld.texinfo: Rename to ...
      	* ld.texi: ... this.
      	* ldint.texinfo: Rename to ...
      	* ldint.texi: ... this.
      	* Makefile.in: Re-generate.
      	* aclocal.m4: Re-generate.
      	* config.in: Re-generate.
      	* configure: Re-generate.
      
      libdecnumber/ChangeLog:
      
      	* configure.ac: Remove AC_PREREQ.
      	* configure: Re-generate.
      	* aclocal.m4.
      
      libiberty/ChangeLog:
      
      	* configure.ac: Remove AC_PREREQ.
      	* configure: Re-generate.
      	* config.in: Re-generate.
      
      opcodes/ChangeLog:
      
      	* Makefile.am (AUTOMAKE_OPTIONS): Remove 1.11.
      	* configure.ac: Remove AC_PREREQ.
      	* Makefile.in: Re-generate.
      	* aclocal.m4: Re-generate.
      	* configure: Re-generate.
      
      readline/ChangeLog.gdb:
      
      	* configure: Re-generate.
      	* examples/rlfe/configure: Re-generate.
      
      sim/ChangeLog:
      
      	* All configure.ac: Remove AC_PREREQ.
      	* All configure: Re-generate.
      
      zlib/ChangeLog.bin-gdb:
      
      	* configure.ac: Modernize AC_INIT call, remove AC_PREREQ.
      	* Makefile.am (AUTOMAKE_OPTIONS): Remove 1.8, cygnus, add
      	foreign.
      	* Makefile.in: Re-generate.
      	* aclocal.m4: Re-generate.
      	* configure: Re-generate.
      d0ac1c44
    • Simon Marchi's avatar
      include: Sync with GCC · d856f9a8
      Simon Marchi authored
      Bring changes from GCC in shared headers.
      
      include/ChangeLog:
      
      	Sync with GCC
      
      	2018-05-24  Tom Rix  <trix@juniper.net>
      
      	* dwarf2.def (DW_FORM_strx*, DW_FORM_addrx*): New.
      
      	2017-11-20  Kito Cheng  <kito.cheng@gmail.com>
      
      	* longlong.h [__riscv] (__umulsidi3): Define.
      	[__riscv] (umul_ppmm): Likewise.
      	[__riscv] (__muluw3): Likewise.
      d856f9a8
    • Pedro Alves's avatar
      Silence -Wmaybe-uninitialized warning in minsyms.c:lookup_minimal_symbol_by_pc_section · 6ae50267
      Pedro Alves authored
      Compiling with GCC 8.1 shows this warning:
      
        gdb/minsyms.c: In function 'bound_minimal_symbol lookup_minimal_symbol_by_pc_section(CORE_ADDR, obj_section*, lookup_msym_prefer)':
        gdb/minsyms.c:825:40: warning: 'want_type' may be used uninitialized in this function [-Wmaybe-uninitialized]
      	   && MSYMBOL_TYPE (&msymbol[hi]) != want_type
      
      That warning is a false positive, because the switch that converts
      enum lookup_msym_prefer values to enum enum minimal_symbol_type values
      has a case for every lookup_msym_prefer enumerator:
      
        switch (prefer)
         {
          case lookup_msym_prefer::TEXT:
            want_type = mst_text;
            break;
          case lookup_msym_prefer::TRAMPOLINE:
            want_type = mst_solib_trampoline;
            break;
          case lookup_msym_prefer::GNU_IFUNC:
            want_type = mst_text_gnu_ifunc;
            break;
          }
      
      The problem is that GCC assumes that enum variables may hold values
      other than the named enumerators (like e.g., "lookup_msym_prefer
      prefer = (lookup_msym_prefer) 10;").
      
      Rework the code a bit, adding a gdb_assert to make it explicit to the
      compiler that want_type is initialized in all normal-return paths.
      
      gdb/ChangeLog:
      2018-06-19  Pedro Alves  <palves@redhat.com>
      
      	* minsyms.c (msym_prefer_to_msym_type): New, factored out from ...
      	(lookup_minimal_symbol_by_pc_section): ... here with
      	gdb_assert_not_reached added.
      6ae50267
    • Pedro Alves's avatar
      Change inline frame breakpoint skipping logic (fix gdb.gdb/selftest.exp) · 61b04dd0
      Pedro Alves authored
      Currently, gdb.gdb/selftest.exp fails if you build GDB with
      optimization (-O2, etc.).
      
      The reason is that after setting a breakpoint in captured_main, we
      stop at:
       ...
       Breakpoint 1, captured_main_1 (context=<optimized out>) at src/gdb/main.c:492
       ...
      while selftest_setup expects a stop at captured_main.
      
      Here, captured_main_1 has been inlined into captured_main, and
      captured_main has been inlined into gdb_main:
      
       ...
       $ nm ./build/gdb/gdb | egrep ' [tT] .*captured_main|gdb_main' | c++filt
       000000000061b950 T gdb_main(captured_main_args*)
       ...
      
      Indeed, the two inlined functions show up in the backtrace:
      
       ...
       (gdb) bt
       #0  captured_main_1 (context=<optimized out>) at main.c:492
       #1  captured_main (data=<optimized out>) at main.c:1147
       #2  gdb_main (args=args@entry=0x7fffffffdb80) at main.c:1173
       #3  0x000000000040fea5 in main (argc=<optimized out>, argv=<optimized out>)
           at gdb.c:32
       ...
      
      We're now stopping at captured_main_1 because commit ddfe970e
      ("Don't elide all inlined frames") makes GDB present a stop at the
      innermost inlined frame if the program stopped by a user breakpoint.
      
      Now, the selftest.exp testcase explicitly asks to stop at
      "captured_main", not "captured_main_1", so I'm thinking that it's
      GDB'S behavior that should be improved.  That is what this commit
      does, by only showing a stop at an inline frame if the user breakpoint
      was set in that frame's block.
      
      Before this commit:
      
       (top-gdb) b captured_main
       Breakpoint 1 at 0x792f99: file src/gdb/main.c, line 492.
       (top-gdb) r
       Starting program: build/gdb/gdb
      
       Breakpoint 1, captured_main_1 (context=<optimized out>) at src/gdb/main.c:492
       492       lim_at_start = (char *) sbrk (0);
       (top-gdb)
      
      After this commit, we now instead get:
      
       (top-gdb) b captured_main
       Breakpoint 1 at 0x791339: file src/gdb/main.c, line 492.
       (top-gdb) r
       Starting program: build/gdb/gdb
      
       Breakpoint 1, captured_main (data=<optimized out>) at src/gdb/main.c:1147
       1147      captured_main_1 (context);
       (top-gdb)
      
      and:
      
       (top-gdb) b captured_main_1
       Breakpoint 2 at 0x791339: file src/gdb/main.c, line 492.
       (top-gdb) r
       Starting program: build/gdb/gdb
       Breakpoint 2, captured_main_1 (context=<optimized out>) at src/gdb/main.c:492
       492       lim_at_start = (char *) sbrk (0);
       (top-gdb)
      
      Note that both captured_main and captured_main_1 resolved to the same
      address, 0x791339.  That is necessary to trigger the issue in
      question.  The gdb.base/inline-break.exp testcase currently does not
      exercise that, but the new test added by this commit does.  That new
      test fails without the GDB fix and passes with the fix.  No
      regressions on x86-64 GNU/Linux.
      
      While at it, the THIS_PC comparison in stopped_by_user_bp_inline_frame
      is basically a nop, so just remove it -- if a software or hardware
      breakpoint explains the stop, then it must be that it was installed at
      the current PC.
      
      gdb/ChangeLog:
      2018-06-19  Pedro Alves  <palves@redhat.com>
      
      	* inline-frame.c (stopped_by_user_bp_inline_frame): Replace PC
      	parameter with a block parameter.  Compare location's block symbol
      	with the frame's block instead of addresses.
      	(skip_inline_frames): Pass the current block instead of the
      	frame's address.  Break out as soon as we determine the frame
      	should not be skipped.
      
      gdb/testsuite/ChangeLog:
      2018-06-19  Pedro Alves  <palves@redhat.com>
      
      	* gdb.opt/inline-break.c (func_inline_callee, func_inline_caller)
      	(func_extern_caller): New.
      	(main): Call func_extern_caller.
      	* gdb.opt/inline-break.exp: Add tests for inline frame skipping
      	logic change.
      61b04dd0
    • Andreas Schwab's avatar
      Fix ChangeLog entry · 3a075e56
      Andreas Schwab authored
      3a075e56
    • Andreas Schwab's avatar
      readelf: Handle more RISC-V relocations · 39e07931
      Andreas Schwab authored
      	* readelf.c (is_16bit_abs_reloc): Handle R_RISCV_SET16.
      	(is_8bit_abs_reloc): New function.
      	(is_6bit_abs_reloc): New function.
      	(is_6bit_inplace_sub_reloc): New function.
      	(apply_relocations): Use them.  Handle 6-bit relocations.
      39e07931
    • Simon Marchi's avatar
      Fix ChangeLog merge conflict · f63b508a
      Simon Marchi authored
      I noticed that gdb/testsuite/ChangeLog had some conflict markers... this
      patch fixes it.
      f63b508a
    • GDB Administrator's avatar
      Automatic date update in version.in · e31716b0
      GDB Administrator authored
      e31716b0
  4. 18 Jun, 2018 5 commits
    • Eric Botcazou's avatar
      This was already applied on the GCC side. · e0541124
      Eric Botcazou authored
      	* Makefile.def (fortran): Add check-target-libgomp-fortran.
      	* Makefile.tpl (check-target-libgomp-fortran): New phony target.
      	* Makefile.in: Regenerate.
      
      	* configure: Regenerate.
      e0541124
    • Weimin Pan's avatar
      Fix failure to find member of a typedef base class · bf2977b5
      Weimin Pan authored
      The test case below demonstrates the problem, as described in this PR's Comment 5:
      
      typedef struct {
              int x;
      } A;
      
      struct C : A {
              int y;
      };
      
      int main()
      {
              C c;
              return 55;
      }
      
      $ gdb a.out
      (gdb) ptype C::x
      Internal error: non-aggregate type to value_struct_elt_for_reference
      
      In value_struct_elt_for_reference(), need to call check_typedef() on
      the aggregate type to handle the case of *curtype being ptr->typedef.
      
      Tested on x86_64-linux. No regressions.
      bf2977b5
    • Simon Marchi's avatar
      Remove current_traceframe declaration · c4eb05ff
      Simon Marchi authored
      The variable has been removed in c12a5089 ("Add client_state struct."),
      remove the leftover declaration.
      
      gdb/gdbserver/ChangeLog:
      
      	* tracepoint.h (current_traceframe): Remove declaration.
      c4eb05ff
    • Tom Tromey's avatar
      Use unique_xmalloc_ptr in solib-aix.c · f709fabb
      Tom Tromey authored
      This removes a cleanup from solib-aix.c via unique_xmalloc_ptr.
      
      gdb/ChangeLog
      2018-06-18  Tom Tromey  <tom@tromey.com>
      
      	* solib-aix.c (solib_aix_get_section_offsets): Return
      	unique_xmalloc_ptr.
      	(solib_aix_solib_create_inferior_hook): Update.
      f709fabb
    • Tom Tromey's avatar
      Use unique_xmalloc_ptr in darwin_current_sos · 668eb2f0
      Tom Tromey authored
      This changes darwin_current_sos to use unique_xmalloc_ptr rather than
      a cleanup.
      
      gdb/ChangeLog
      2018-06-18  Tom Tromey  <tom@tromey.com>
      
      	* solib-darwin.c (darwin_current_sos): Use unique_xmalloc_ptr.
      668eb2f0