aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-10-14mips: Check UNDEFWEAK_NO_DYNAMIC_RELOCH.J. Lu2-2/+17
Don't generate dynamic relocation against weak undefined symbol if it is resolved to zero. FIXME: UNDEFWEAK_NO_DYNAMIC_RELOC may need to be checked in more places. PR ld/22269 * elfxx-mips.c (mips_elf_calculate_relocation): Don't generate dynamic relocation if UNDEFWEAK_NO_DYNAMIC_RELOC is true. (allocate_dynrelocs): Don't allocate dynamic relocations if UNDEFWEAK_NO_DYNAMIC_RELOC is true.
2017-10-14arm: Check UNDEFWEAK_NO_DYNAMIC_RELOCH.J. Lu2-3/+18
Don't generate dynamic relocation against weak undefined symbol if it is resolved to zero. FIXME: UNDEFWEAK_NO_DYNAMIC_RELOC may need to be checked in more places. PR ld/22269 * elf32-arm.c (elf32_arm_final_link_relocate): Don't generate dynamic relocation if UNDEFWEAK_NO_DYNAMIC_RELOC is true. (allocate_dynrelocs_for_symbol): Discard dynamic relocations if UNDEFWEAK_NO_DYNAMIC_RELOC is true.
2017-10-14tile: Check UNDEFWEAK_NO_DYNAMIC_RELOCH.J. Lu3-6/+28
Don't generate dynamic relocation against weak undefined symbol if it is resolved to zero. FIXME: UNDEFWEAK_NO_DYNAMIC_RELOC may need to be checked in more places. PR ld/22269 * elf32-tilepro.c (allocate_dynrelocs): Discard dynamic relocations if UNDEFWEAK_NO_DYNAMIC_RELOC is true. (tilepro_elf_relocate_section): Don't generate dynamic relocation if UNDEFWEAK_NO_DYNAMIC_RELOC is true. * elfxx-tilegx.c (allocate_dynrelocs): Discard dynamic relocations if UNDEFWEAK_NO_DYNAMIC_RELOC is true. (tilegx_elf_relocate_section): Don't generate dynamic relocation if UNDEFWEAK_NO_DYNAMIC_RELOC is true.
2017-10-14aarch64: Check UNDEFWEAK_NO_DYNAMIC_RELOCH.J. Lu2-2/+17
Don't generate dynamic relocation against weak undefined symbol if it is resolved to zero. FIXME: UNDEFWEAK_NO_DYNAMIC_RELOC may need to be checked in more places. PR ld/22269 * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Don't generate dynamic relocation if UNDEFWEAK_NO_DYNAMIC_RELOC is true. (elfNN_aarch64_allocate_dynrelocs): Discard dynamic relocations if UNDEFWEAK_NO_DYNAMIC_RELOC is true.
2017-10-14Move UNDEFWEAK_NO_DYNAMIC_RELOC to elf-bfd.hH.J. Lu4-14/+13
Move UNDEFWEAK_NO_DYNAMIC_RELOC to elf-bfd.h so that it can be used by other ELF linker backends. * elf32-ppc.c (UNDEFWEAK_NO_DYNAMIC_RELOC): Moved to ... * elf-bfd.h (UNDEFWEAK_NO_DYNAMIC_RELOC): Here. * elf64-ppc.c (UNDEFWEAK_NO_DYNAMIC_RELOC): Removed.
2017-10-14Fix build failure in linux-osdata.cSimon Marchi2-1/+6
Commit Use std::vector in linux_xfer_osdata_processgroups b129dcac882da87767cb863ad8b2572f90e9e5bc broke the build with older gcc (at least 4.7 and 4.8): In file included from /usr/include/c++/4.7/algorithm:63:0, from /home/emaisin/src/binutils-gdb/gdb/nat/linux-osdata.c:40: /usr/include/c++/4.7/bits/stl_algo.h: In instantiation of ‘_RandomAccessIterator std::__unguarded_partition(_RandomAccessIterator, _RandomAccessIterator, const _Tp&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<pid_pgid_entry*, std::vector<pid_pgid_entry> >; _Tp = pid_pgid_entry]’: /usr/include/c++/4.7/bits/stl_algo.h:2315:70: required from ‘_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<pid_pgid_entry*, std::vector<pid_pgid_entry> >]’ /usr/include/c++/4.7/bits/stl_algo.h:2347:54: required from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<pid_pgid_entry*, std::vector<pid_pgid_entry> >; _Size = long int]’ /usr/include/c++/4.7/bits/stl_algo.h:5483:4: required from ‘void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<pid_pgid_entry*, std::vector<pid_pgid_entry> >]’ /home/emaisin/src/binutils-gdb/gdb/nat/linux-osdata.c:480:57: required from here /usr/include/c++/4.7/bits/stl_algo.h:2277:4: error: passing ‘const pid_pgid_entry’ as ‘this’ argument of ‘bool pid_pgid_entry::operator<(const pid_pgid_entry&)’ discards qualifiers [-fpermissive] Making the operator< method const fixes it. gdb/ChangeLog: * nat/linux-osdata.c (struct pid_pgid_entry) <operator<>: Make const.
2017-10-14gdbserver: use std::list for all_threadsSimon Marchi15-454/+345
Remove the usage of inferior_list for the all_threads list in gdbserver. The entry field in thread_info is removed, and replaced by a simple ptid field. I added some functions to iterate (for_each_thread) and find threads (find_thread). However, changing all the users of find_inferior & co to use these new functions would have made the patch way too big. So I opted instead to make find_inferior & co some shims, so that the existing code only needs to be updated minimally. We can then update the existing code to use the new functions incrementally (I've started to do the work, but I'll post it afterwards, see [1] if you want a peek). This patch has been built-tested on all relevant platforms, except lynx. I also regtested using the native-gdbserver and native-extended-gdbserver boards on x86. [1] https://github.com/simark/binutils-gdb/commits/kill-inferior-list-entry gdb/gdbserver/ChangeLog: * inferiors.h: (struct inferior_list): Remove. (struct inferior_list_entry); Remove. (add_inferior_to_list, clear_inferior_list, one_inferior_p, A_I_NEXT, ALL_INFERIORS_TYPE, ALL_INFERIORS, remove_inferior, get_first_inferior): Remove. (for_each_inferior, for_each_inferior_with_data, find_inferior, find_inferior_id, find_inferior_in_random): Change signature. * inferiors.c (all_threads): Change type to std::list<thread_info *>. (get_thread): Remove macro. (find_inferior, find_inferior_id): Change signature, implement using find_thread. (find_inferior_in_random): Change signature, implement using find_thread_in_random. (for_each_inferior, for_each_inferior_with_data): Change signature, implement using for_each_thread. (add_inferior_to_list, remove_inferior): Remove. (add_thread, get_first_thread, thread_of_pid, find_any_thread_of_pid, free_one_thread, remove_thread): Update. (get_first_inferior, one_inferior_p, clear_inferior_list): Remove. (clear_inferiors, get_thread_process): Update. * gdbthread.h: Include <list>. (struct thread_info) <entry>: Remove field. <id>: New field. (all_threads): Change type to std::list<thread_info *>. (get_first_inferior): Add doc. (find_thread, for_each_thread, find_thread_in_random): New functions. (current_ptid, pid_of, ptid_of, lwpid_of): Update. * linux-arm-low.c (update_registers_callback): Update. * linux-low.c (second_thread_of_pid_p): Update. (kill_one_lwp_callback, linux_detach_lwp_callback, delete_lwp_callback, status_pending_p_callback, same_lwp, find_lwp_pid, num_lwps, iterate_over_lwps_filter, iterate_over_lwps, not_stopped_callback, resume_stopped_resumed_lwps, count_events_callback, select_singlestep_lwp_callback, select_event_lwp_callback, unsuspend_one_lwp, linux_wait_1, send_sigstop_callback, suspend_and_send_sigstop_callback, wait_for_sigstop, stuck_in_jump_pad_callback, move_out_of_jump_pad_callback, lwp_running, linux_set_resume_request, resume_status_pending_p, need_step_over_p, start_step_over, linux_resume_one_thread, proceed_one_lwp, unsuspend_and_proceed_one_lwp, reset_lwp_ptrace_options_callback): Update. * linux-mips-low.c (update_watch_registers_callback): Update. * regcache.c (regcache_invalidate_one, regcache_invalidate): Update. (free_register_cache_thread_one): Remove. (regcache_release): Update. * server.c (handle_btrace_enable_bts, handle_btrace_enable_pt, handle_qxfer_threads_worker): Update. (handle_query): Update, use list iterator. (visit_actioned_threads, handle_pending_status, queue_stop_reply_callback, gdb_wants_all_threads_stopped, clear_pending_status_callback, set_pending_status_callback, find_status_pending_thread_callback, handle_status, process_serial_event): Update. * target.c (thread_search_callback): Update. * thread-db.c (thread_db_get_tls_address): Update. * tracepoint.c (tracepoint_finished_step, tracepoint_was_hit): Update. * win32-i386-low.c (update_debug_registers_callback): Update. * win32-low.c (delete_thread_info, child_delete_thread, continue_one_thread, suspend_one_thread, get_child_debug_event): Adjust.
2017-10-14gdbserver: Use std::list for all_processesSimon Marchi8-190/+225
Remove the usage of inferior_list for the all_processes list in gdbserver, replace it with an std::list. The entry field in process_info is removed, and replaced by a simple pid field. The pid_of macro, used for both processes and threads, is replaced with separate functions. For completeness, I changed ptid_of and lwpid_of to functions as well. gdb/gdbserver/ChangeLog: * gdbthread.h (ptid_of, pid_of, lwpid_of): New functions. * inferiors.h: Include <list>. (struct process_info) <entry>: Remove field. <pid>: New field. (pid_of): Change macro to function. (ptid_of, lwpid_of): Remove macro. (all_processes): Change type to std::list<process_info *>. (ALL_PROCESSES): Remove macro. (for_each_process, find_process): New function. * inferiors.c (all_processes): Change type to std::list<process_info *>. (find_thread_process): Adjust. (add_process): Likewise. (remove_process): Likewise. (find_process_pid): Likewise. (get_first_process): Likewise. (started_inferior_callback): Remove. (have_started_inferiors_p): Adjust. (attached_inferior_callback): Remove. (have_attached_inferiors_p): Adjust. * linux-low.c (check_zombie_leaders): Likewise. * linux-x86-low.c (x86_arch_setup_process_callback): Remove. (x86_linux_update_xmltarget): Adjust. * server.c (handle_query): Likewise. (gdb_reattached_process): Remove. (handle_status): Adjust. (kill_inferior_callback): Likewise. (detach_or_kill_inferior): Remove. (print_started_pid): Likewise. (print_attached_pid): Likewise. (detach_or_kill_for_exit): Update. (process_serial_event): Likewise. * linux-arm-low.c (arm_new_fork): Likewise.
2017-10-14gdbserver: Use std::list for all_dllsSimon Marchi4-71/+47
As a small step towards removing inferior_list/inferior_list_entry, this patch replaces the usage of inferior_list for the list of dlls by an std::list. The dll_info type now uses an std::string for name and has a simple constructor. I am able to build gdbserver with mingw on Linux, but I am not able to test this on a Windows machine (the only platform that uses this code). gdb/gdbserver/ChangeLog: * dll.h: Include <list>. (struct dll_info): Add constructor. <entry>: Remove field. (all_dlls): Change type to std::list<dll_info>. * dll.c: Include <algorithm>. (get_dll): Remove macro. (all_dlls): Change type to std::list<dll_info *>. (free_one_dll): Remove. (match_dll): Likewise. (loaded_dll): Adjust. (unloaded_dll): Adjust to all_dlls type change, use std::find_if. Inline code from match_dll. (clear_dlls): Adjust to all_dlls type change. * server.c (emit_dll_description): Remove. (handle_qxfer_libraries): Adjust to all_dlls type change, integrate emit_dll_description's functionality.
2017-10-14Make to_traceframe_info return a unique_ptrSimon Marchi9-63/+63
Since this target method returns an allocated object, return a unique_ptr. It allows getting rid a some cleanups here and there. I had to shuffle the includes around. First, target.h now needs to include tracepoint.h, to get the definition of traceframe_info_up. However, the definition of enum trace_find_type was later in target, so I had to move it to tracepoint.h, so that the declaration of tfind_1 could know about it. I then had to remove the include of target.h from tracepoint.h, which caused a circular dependency (it was probably included to get enum trace_find_type in the first place anyway). Regression tested on the buildbot. gdb/ChangeLog: * target.h: Include tracepoint.h. (enum trace_find_type): Move to tracepoint.h. (struct target_ops) <to_traceframe_info>: Return a unique ptr. * tracepoint.h: Don't include target.h (enum trace_find_type): Move from target.h. (parse_traceframe_info): Return a unique ptr. * tracepoint.c (current_traceframe_info): Change type to unique ptr. (free_traceframe_info): Remove. (clear_traceframe_info): Don't manually free current_traceframe_info. (free_result): Remove. (parse_traceframe_info): Return a unique ptr. (get_traceframe_info): Adjust to unique ptr. * ctf.c (ctf_traceframe_info): Return a unique ptr. * remote.c (remote_traceframe_info): Return a unique ptr. * tracefile-tfile.c (tfile_traceframe_info): Return a unique ptr. * target-debug.h (target_debug_print_traceframe_info_up): New macro. * target-delegates.c: Regenerate.
2017-10-14Use std::vector for traceframe_info::memorySimon Marchi6-26/+30
Straightforward change from a VEC to std::vector. This allows making the destruction of a traceframe_info trivial. I added a constructor with parameters to mem_range to be able to emplace_back directly with the values. It is necessary to leave a default constructor there because mem_range is still used in a VEC. gdb/ChangeLog: * memrange.h (struct mem_range): Add constructors. * tracepoint.h (struct traceframe_info) <memory>: Change type to std::vector<mem_range>. * tracepoint.c (free_traceframe_info): Don't manually free vector. (traceframe_info_start_memory): Adjust to vector change. (traceframe_available_memory): Likewise. * tracefile-tfile.c (build_traceframe_info): Likewise. * ctf.c (ctf_traceframe_info): Likewise.
2017-10-14Use std::vector for traceframe_info::tvarsSimon Marchi6-15/+25
Straightforward change to get rid of a VEC. We need to new/delete traceframe_info instead of malloc/free it. I found three places that allocate a traceframe_info (ctf_traceframe_info, tfile_traceframe_info and parse_traceframe_info) and only one that frees it (free_traceframe_info). gdb/ChangeLog: * tracepoint.h (struct traceframe_info) <tvars>: Change type to std::vector<int>. * tracepoint.c (free_traceframe_info): Deallocate with delete. (traceframe_info_start_tvar): Adjust to vector change. (parse_traceframe_info): Allocate with new. * ctf.c (ctf_traceframe_info): Allocate with new, adjust to vector change. * tracefile-tfile.c (build_traceframe_info): Adjust to vector change. tfile_traceframe_info): Allocate with new. * mi/mi-main.c (mi_cmd_trace_frame_collected): Adjust to vector change.
2017-10-14Rename traceframe_info variable to current_traceframe_infoSimon Marchi2-6/+13
... so it doesn't shadow the traceframe_info type. It think it's a clearer name anyway. gdb/ChangeLog: * tracepoint.c (traceframe_info): Rename to... (current_traceframe_info): ...this. (clear_traceframe_info): Adjust. (get_traceframe_info): Adjust.
2017-10-14Use std::vector in linux_xfer_osdata_processgroupsSimon Marchi2-56/+48
This simplifies the code quite a bit, by removing the array of PID_T that's actually an array of pairs of PID_T. This code is only used to implement "info os procgroups". I tested by hand as well as by running gdb.base/info-os.exp for unix, native-gdbserver and native-extended-gdbserver. gdb/ChangeLog: * nat/linux-osdata.c: Include algorithm. (compare_processes): Remove. (struct pid_pgid_entry): New struct. (linux_xfer_osdata_processgroups): Use std::vector instead of XNEWVEC.
2017-10-14Replace psymbol_allocation_list with std::vectorSimon Marchi11-217/+162
psymbol_allocation_list is basically a vector implementation. We can replace it with an std::vector, now that objfile has been C++-ified. I sent this to the buildbot, there are a few suspicious failures, but I don't think they are related to this patch. For example on powerpc: new FAIL: gdb.base/catch-syscall.exp: execve: syscall execve has returned new FAIL: gdb.base/catch-syscall.exp: execve: continue to main new FAIL: gdb.base/catch-syscall.exp: execve: continue until exit I get the same failures when testing manually on gcc112, without this patch. gdb/ChangeLog: * objfiles.h: Don't include symfile.h. (struct partial_symbol): Remove forward-declaration. (struct objfile) <global_psymbols, static_psymbols>: Change type to std::vector<partial_symbol *>. * objfiles.c (objfile::objfile): Don't memset those fields. (objfile::~objfile): Don't free those fields. * psympriv.h (struct psymbol_allocation_list): Remove forward-declaration. (add_psymbol_to_list): Change psymbol_allocation_list parameter to std::vector. (start_psymtab_common): Change parameters to std::vector. * psymtab.c: Include algorithm. (require_partial_symbols): Call shrink_to_fit. (find_pc_sect_psymbol): Adjust to vector change. (match_partial_symbol): Likewise. (lookup_partial_symbol): Likewise. (psym_relocate): Likewise. (dump_psymtab): Likewise. (recursively_search_psymtabs): Likewise. (compare_psymbols): Remove. (sort_pst_symbols): Adjust to vector change. (start_psymtab_common): Likewise. (end_psymtab_common): Likewise. (psymbol_bcache_full): De-constify return value. (add_psymbol_to_bcache): Likewise. (extend_psymbol_list): Remove. (append_psymbol_to_list): Adjust to vector change. (add_psymbol_to_list): Likewise. (init_psymbol_list): Likewise. (maintenance_info_psymtabs): Likewise. (maintenance_check_psymtabs): Likewise. * symfile.h (struct psymbol_allocation_list): Remove. * symfile.c (reread_symbols): Adjust to vector change. * dbxread.c (start_psymtab): Change type of parameters. (dbx_symfile_read): Adjust to vector change. (read_dbx_symtab): Likewise. (start_psymtab): Change type of parameters. * dwarf2read.c (dwarf2_build_psymtabs): Adjust to vector change. (create_partial_symtab): Likewise. (add_partial_symbol): Likewise. (write_one_signatured_type): Likewise. (recursively_write_psymbols): Likewise. * mdebugread.c (parse_partial_symbols): Likewise. * xcoffread.c (xcoff_start_psymtab): Change type of parameters. (scan_xcoff_symtab): Adjust to vector change. (xcoff_initial_scan): Likewise.
2017-10-13ada: Use std::string in print_dynamic_range_boundSimon Marchi2-7/+7
Replace this usage of GROW_VECT with an std::string. I don't think there's a reason for this variable to be static, other than it was cumbersome to manage its lifetime (i.e. use a cleanup) before. Tested by comparing the gdb.ada/*.exp test results before and after the patch. gdb/ChangeLog: * ada-typeprint.c (print_dynamic_range_bound): Use std::string.
2017-10-14Automatic date update in version.inGDB Administrator1-1/+1
2017-10-13Skip a few tests on targets that can't use the "run" commmand.Pedro Alves7-21/+35
These tests want to use raw "run", so skip them on targets that can't do that. Also adds a small utility procedure that clearly conveys intent instead of explicitly checking use_gdb_stub in the testcases. This makes sure these testcases continue to be skipped with --target_board=native-gdbserver once that board stops setting is_remote. gdb/testsuite/ChangeLog: 2017-10-13 Pedro Alves <palves@redhat.com> * lib/gdb.exp (target_can_use_run_cmd): New procedure. * gdb.base/annota1.exp: Use it instead of is_remote. * gdb.base/annota3.exp: Use it instead of is_remote. * gdb.cp/annota2.exp: Use it instead of is_remote. * gdb.cp/annota3.exp: Use it instead of is_remote. * gdb.multi/bkpt-multi-exec.exp: Use it instead of is_remote.
2017-10-13Fix gdb.base/testenv.exp against --target_board=native-extended-gdbserverPedro Alves2-68/+138
Currently we get: Running ..../src/gdb/testsuite/gdb.base/testenv.exp ... FAIL: gdb.base/testenv.exp: test no TEST_GDB var FAIL: gdb.base/testenv.exp: test with one TEST_GDB var FAIL: gdb.base/testenv.exp: test with two TEST_GDB var FAIL: gdb.base/testenv.exp: test with one TEST_GDB var, after unset FAIL: gdb.base/testenv.exp: test with TEST_GDB_GLOBAL FAIL: gdb.base/testenv.exp: test with TEST_GDB_GLOBAL unset The problem is that the testcase relies on stdio. While we could fix this for gdbserver by read output from inferior_spawn_id, a better fix it to not rely on stdio at all. That's what this commit does. Instead, it reads variables off of the inferior to extract the necessary information. Along the way, most of the .exp file is reimplemented/cleaned up using more modern mechanisms. E.g., with_test_prefix, proc_with_prefix, save_vars, etc. Also, a missing check for "is_remote host" is added. gdb/testsuite/ChangeLog: 2017-10-13 Pedro Alves <palves@redhat.com> * gdb.base/testenv.exp: Check use_gdb_stub instead of is_remote. (test_num_test_vars, run_and_count_vars, find_env) (test_set_unset_env, test_inherit_env_var): New procedures. (top level): Use them.
2017-10-13Don't run gdb.gdb/ selftests if use_gdb_stub is truePedro Alves2-2/+22
If we make the native-gdbserver board be !is_remote, then the few tests that use the selftest-support.exp routines to debug gdb itself start running, and fail, with something like: Running ..../src/gdb/testsuite/gdb.gdb/selftest.exp ... ERROR: tcl error sourcing ..../src/gdb/testsuite/gdb.gdb/selftest.exp. ERROR: gdbserver does not support run [....] without extended-remote while executing "error "gdbserver does not support $command without extended-remote"" (procedure "gdb_test_multiple" line 25) invoked from within "gdb_test_multiple "run $INTERNAL_GDBFLAGS" "$description" { -re "Starting program.*Breakpoint \[0-9\]+,.*$function \\(\\).* at .*main.c:.*$gdb..." (procedure "selftest_setup" line 45) This commit makes sure those tests continue to be skipped. gdb/testsuite/ChangeLog: 2017-10-13 Pedro Alves <palves@redhat.com> * lib/selftest-support.exp (selftest_setup): Extend comments, and also skip on stub-like targets.
2017-10-13Make gdb.base/find-unmapped.exp pass on remote targetsPedro Alves2-13/+61
Currently, with --target_board=native-extended-gdbserver, we get: Running .../src/gdb/testsuite/gdb.base/find-unmapped.exp ... FAIL: gdb.base/find-unmapped.exp: find global_var_0, global_var_2, 0xff FAIL: gdb.base/find-unmapped.exp: find global_var_1, global_var_2, 0xff FAIL: gdb.base/find-unmapped.exp: find global_var_2, (global_var_2 + 16), 0xff This commit makes the test pass there, and also enables in on --target_board=native-gdbserver, and other remote targets. I've filed PR gdb/22293 to track the missing-warning problem. gdb/testsuite/ChangeLog: 2017-10-13 Pedro Alves <palves@redhat.com> PR gdb/22293 * gdb.base/find-unmapped.exp: Don't skip if is_remote target. (top level): Move some tests to ... (test_not_found): ... this new procedure. (top level): Call it.
2017-10-13Simplify tic6x and s390x expedite registersYao Qi2-13/+7
Nowadays, we have six tic6x expedite registers, which are duplicated. tic6x-c64xp-expedite = A15,PC tic6x-c64x-expedite = A15,PC tic6x-c62x-expedite = A15,PC tic6x-c64xp-linux-expedite = A15,PC tic6x-c64x-linux-expedite = A15,PC tic6x-c62x-linux-expedite = A15,PC in features/Makefile, we have echo "expedite:$(if $($*-expedite),$($*-expedite),$($(firstword $(subst -, ,$(notdir $*)))-expedite))" \ >> $(outdir)/$*.tmp which means for a given bar/foo-baz.xml, we'll look for either bar/foo-baz-expedite or foo-expedite. We can define only one generic expedite register for all different ti6cx and s390x target descriptions. Actually, we've done that for x86 target descriptions. Re-run 'make GDB=/path/build/gdb all' to regenerate regformats/*.dat files, and they are not changed. gdb: 2017-10-13 Yao Qi <yao.qi@linaro.org> * features/Makefile: Remove tic6x-*-expedite, add tic6x-expedite. Remove s390x-*-expedite, add s390x-expedite.
2017-10-13Regenerate features/s390-gs-linux64.c and features/s390x-gs-linux64.cYao Qi3-8/+13
gdb: 2017-10-13 Yao Qi <yao.qi@linaro.org> * features/s390-gs-linux64.c: Regenerated. * features/s390x-gs-linux64.c: Regenerated.
2017-10-14PR22263 testcaseAlan Modra3-3/+12
A number of targets need dynamic relocs in PIEs for reasons other than relocating thread variables. The PR is about text relocations, and, reading between the lines, unnecessary dynamic tprel relocations. Change the test to check for those conditions rather than no dynamic relocations PR ld/22263 * testsuite/ld-elf/tls.exp: Link with -z text. * testsuite/ld-elf/pr22263-1.rd: Test for tprel relocs.
2017-10-13Change objfile to use new/deleteTom Tromey7-131/+131
This changes objfiles to use new and delete rather than xmalloc and free. Simon noticed that it uses a non-POD and so shouldn't be allocated with XCNEW; and I wanted to be able to use another non-POD as a member; this patch is the result. Regression tested by the buildbot. 2017-10-13 Tom Tromey <tom@tromey.com> * compile/compile-object-run.c (do_module_cleanup): Use delete. * solib.c (update_solib_list, reload_shared_libraries_1): Use delete. * symfile.c (symbol_file_add_with_addrs): Use new. (symbol_file_add_separate): Update comment. (syms_from_objfile_1, remove_symbol_file_command): Use delete. * jit.c (jit_object_close_impl): Use new. (jit_unregister_code): Use delete. * objfiles.c (objfile::objfile): Rename from allocate_objfile. (~objfile): Rename from free_objfile. (free_objfile_separate_debug, do_free_objfile_cleanup) (free_all_objfiles, objfile_purge_solibs): Use delete. * objfiles.h (struct objfile): Add constructor and destructor. Use DISABLE_COPY_AND_ASSIGN. Add initializers to data members. (allocate_objfile, free_objfile): Don't declare. (struct objstats): Add initializers.
2017-10-13Fix gdb.base/term.exp on non-"target native" boardsPedro Alves2-8/+16
With --target_board=native-extended-gdbserver, we get: Running .../src/gdb/testsuite/gdb.base/term.exp ... FAIL: gdb.base/term.exp: info terminal at breakpoint (gdb) info terminal No saved terminal information. Fix it by running the test everywhere, and expecting different output on non-native targets. gdb/testsuite/ChangeLog: 2017-10-13 Pedro Alves <palves@redhat.com> * gdb.base/term.exp: Don't skip if is_remote target. Instead, expect different "info terminal" output if testing with a non-native target.
2017-10-13Remove is_remote kfail from gdb.python/py-evthreads.expPedro Alves2-6/+6
This testcase works fine with gdbserver nowadays. So remove the kfail. gdb/testsuite/ChangeLog: 2017-10-13 Pedro Alves <palves@redhat.com> Simon Marchi <simon.marchi@polymtl.ca> PR python/12966 * gdb.python/py-evthreads.exp: Remove is_remote target kfail.
2017-10-13Fix gdb.python/py-evthreads.exp with --target_board=native-extended-gdbserverPedro Alves2-2/+10
Fixes: Running ..../src/gdb/testsuite/gdb.python/py-evthreads.exp ... FAIL: gdb.python/py-evthreads.exp: run to breakpoint 1 FAIL: gdb.python/py-evthreads.exp: reached breakpoint 2 FAIL: gdb.python/py-evthreads.exp: thread 2 FAIL: gdb.python/py-evthreads.exp: reached breakpoint 3 FAIL: gdb.python/py-evthreads.exp: thread 3 FAIL: gdb.python/py-evthreads.exp: continue thread 1 [... cascading time outs ...] By following the usual pattern that makes sure that non-stop is enabled before connecting to gdbserver. gdb/testsuite/ChangeLog: 2017-10-13 Pedro Alves <palves@redhat.com> * gdb.python/py-evthreads.exp: Start GDB with "set non-stop on" already.
2017-10-13kfail gdb.python/py-evsignal.exp on RSP targets properlyPedro Alves2-1/+7
Fixes, with --target_board=native-extended-gdbserver: Running ..../src/gdb/testsuite/gdb.python/py-evsignal.exp ... FAIL: gdb.python/py-evsignal.exp: signal Thread 3 gdb/testsuite/ChangeLog: 2017-10-13 Pedro Alves <palves@redhat.com> * gdb.python/py-evsignal.exp: Check gdb_protocol instead of is_remote.
2017-10-13Skip gdb.threads/thread_events.exp on RSP targets properlyPedro Alves2-3/+9
Fixes, with --target_board=native-extended-gdbserver: Running ..../src/gdb/testsuite/gdb.threads/thread_events.exp ... FAIL: gdb.threads/thread_events.exp: continue to after_join_func with messages enabled (saw 0, expected 1) gdb/testsuite/ChangeLog: 2017-10-13 Pedro Alves <palves@redhat.com> * gdb.threads/thread_events.exp: Check gdb_protocol instead of is_remote.
2017-10-13Tweak gdb.base/corefile.exp is_remote checkPedro Alves2-1/+26
1. Otherwise, when we make native-gdbserver board no longer is_remote, we get: Running .../src/gdb/testsuite/gdb.base/corefile.exp ... ERROR: tcl error sourcing .../src/gdb/testsuite/gdb.base/corefile.exp. ERROR: gdbserver does not support attach 9327 without extended-remote while executing "error "gdbserver does not support $command without extended-remote"" That's fixed by using can_spawn_for_attach instead. 2. The gdb_protocol check fixes this current problem with --target_board=extended-remote-gdbserver: Running .../src/gdb/testsuite/gdb.base/corefile.exp ... FAIL: gdb.base/corefile.exp: run: with core FAIL: gdb.base/corefile.exp: run: core file is cleared FAIL: gdb.base/corefile.exp: attach: with core FAIL: gdb.base/corefile.exp: attach: core file is cleared gdb.log: (...) attach 10859 Don't know how to attach. Try "help target". (...) The fix for #2 alone would fix #1 too, but can_spawn_for_attach expresses the requirement directly, so I still left it there. gdb/testsuite/ChangeLog: 2017-10-13 Pedro Alves <palves@redhat.com> * gdb.base/corefile.exp (corefile_test_run): Skip if gdb_protocol is set. (corefile_test_attach): Likewise. Check can_spawn_for_attach instead of is_remote.
2017-10-13Fix is_remote check in gdb.base/remote.expPedro Alves2-4/+12
1. Otherwise, when the native-gdbserver board stops setting is_remote, this test would stop running there. 2. Makes the test run with --target_board=native-extended-gdbserver too. gdb/testsuite/ChangeLog: 2017-10-13 Pedro Alves <palves@redhat.com> * gdb.base/remote.exp: Check gdb_protocol instead of is_remote. (top level): Add comment.
2017-10-13gdb.base/remote.exp: Fix typo and add missing returnPedro Alves2-1/+7
(Dropped 'u' while at it because we're supposed to prefer American English spelling...) gdb/testsuite/ChangeLog: 2017-10-13 Pedro Alves <palves@redhat.com> * gdb.base/remote.exp (top level): Fix comment typo and add missing return.
2017-10-13Make gdb.base/solib-nodir.exp work with --target_board=native-extended-gdbserverPedro Alves2-3/+22
Fixes: Running .../src/gdb/testsuite/gdb.base/solib-nodir.exp ... FAIL: gdb.base/solib-nodir.exp: library loaded ... by using the new "set cwd" command. gdb/testsuite/ChangeLog: 2017-10-13 Pedro Alves <palves@redhat.com> Simon Marchi <simon.marchi@polymtl.ca> * gdb.base/solib-nodir.exp: Split is_remote and skip_shlib_tests calls and add comments. Skip test if use_gdb_stub is set. (top level): Use "set cwd" command instead of "cd" command.
2017-10-13Eliminate is_remote check in gdb.base/shlib-call.expPedro Alves2-11/+20
gdb/testsuite/ChangeLog: 2017-10-13 Pedro Alves <palves@redhat.com> * gdb.base/shlib-call.exp (top level): Use gdb_run_cmd and remove is_remote target check.
2017-10-12Remove simple_displaced_step_copy_insnSimon Marchi8-50/+18
Nothing uses this function. Remove it, and adjust comments referring to it. gdb/ChangeLog: * arch-utils.h (simple_displaced_step_copy_insn): Remove. * arch-utils.c (simple_displaced_step_copy_insn): Remove. * gdbarch.sh (displaced_step_copy_insn): Adjust comment. * gdbarch.h: Regenerate. * i386-linux-tdep.c (i386_linux_displaced_step_copy_insn): Adjust comment. * i386-tdep.c (i386_displaced_step_copy_insn): Adjust comment. (i386_displaced_step_fixup): Adjust comment. * rs6000-tdep.c (ppc_displaced_step_copy_insn): Adjust comment.
2017-10-12FT32: support for FT32B processor - part 1James Bowman15-35/+503
FT32B is a new FT32 family member. It has a code compression scheme, which requires the use of linker relaxations. The change is quite large, so submission is in several parts. Part 1 adds a 15-bit instruction field, and CPU-specific functions for the code compression that are used in binutils and GDB. bfd/ChangeLog: 2017-10-12 James Bowman <james.bowman@ftdichip.com> * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. * elf32-ft32.c: Add HOWTO R_FT32_15. * reloc.c: Add BFD_RELOC_FT32_15. gas/ChangeLog: 2017-10-12 James Bowman <james.bowman@ftdichip.com> * config/tc-ft32.c (md_assemble): Replace FT32_FLD_K8 with K15. (md_apply_fix, tc_gen_reloc): Add BFD_RELOC_FT32_15. include/ChangeLog: 2017-10-12 James Bowman <james.bowman@ftdichip.com> * elf/ft32.h: Add R_FT32_15. * opcode/ft32.h: Replace FT32_FLD_K8 with K15. (ft32_shortcode, sc_compar, ft32_split_shortcode, ft32_merge_shortcode, ft32_merge_shortcode): New functions. opcodes/ChangeLog: 2017-10-12 James Bowman <james.bowman@ftdichip.com> * opcodes/ft32-dis.c (print_insn_ft32): Replace FT32_FLD_K8 with K15. * opcodes/ft32-opc.c (ft32_opc_info): Replace FT32_FLD_K8 with K15. Add jmpix pattern. sim/ChangeLog: 2017-10-12 James Bowman <james.bowman@ftdichip.com> * sim/ft32/interp.c (step_once): Replace FT32_FLD_K8 with K15.
2017-10-12Add myself as ft32 maintainer for sim.James Bowman2-0/+5
sim/ChangeLog: 2017-10-12 James Bowman <james.bowman@ftdichip.com> * MAINTAINERS (ft32): Add myself.
2017-10-13Eliminate is_remote check in gdb.base/scope.expPedro Alves3-23/+60
This commit makes --target_board=native-gdbserver (and in principle all other is_remote boards) pass all the same gdb.base/scope.exp tests as native testing. I first wrote the gdb.base/scope.exp change described in the ChangeLog below and in the new comments in the patch, knowing that gdb_file_cmd was the right thing to use here. However, that revealed that the native-extended-gdbserver board should be overriding gdb_file_cmd+gdb_reload instead of gdb_load, as is hinted at by the comments on top of the default implementations in testsuite/lib/gdb.exp, because otherwise a gdb_run_cmd after gdb_file_cmd misses setting "set remote exec-file". However, if we do that and remove gdb_load, then we regress gdb.base/dbx.exp, so for now keep the gdb_load override as well. gdb/testsuite/ChangeLog: 2017-10-13 Pedro Alves <palves@redhat.com> * gdb.base/scope.exp: Use build_executable + clean_restart + gdb_file_cmd instead of prepare_for_testing and no longer skip "before run" tests on is_remote target boards. Update comments. * boards/native-extended-gdbserver.exp (extended_gdbserver_load_last_file): New, factored out from ... (gdb_load): ... this. Move further below and add comment. (extended_gdbserver_gdb_file_cmd, gdb_file_cmd, gdb_reload): New.
2017-10-13Automatic date update in version.inGDB Administrator1-1/+1
2017-10-13Remove references to gdb64 in the testsuitePedro Alves3-16/+6
I'm not sure whether this gdb64 was ever a thing in the upstream repo, but it certainly doesn't exist nowadays. AFAICT, this came in with the original big merge with the HP tree: https://sourceware.org/ml/gdb-patches/1999-q2/msg00149.html gdb/testsuite/ChangeLog: 2017-10-12 Pedro Alves <palves@redhat.com> * gdb.base/attach.exp: Remove references to gdb64. * gdb.base/dbx.exp: Remove references to gdb64.
2017-10-12Remove is_remote check in labels.expSimon Marchi2-6/+5
This works fine with remote target boards. gdb/testsuite/ChangeLog: 2017-10-12 Simon Marchi <simon.marchi@polymtl.ca> Pedro Alves <palves@redhat.com> * gdb.base/label.exp: Remove is_remote target check.
2017-10-12Make gdb.base/auvx.exp work with --target_board=native-extended-gdbserverPedro Alves2-3/+9
Currently we get: Running .../src/gdb/testsuite/gdb.base/auxv.exp ... WARNING: can't generate a core file - core tests suppressed - check ulimit -c After this commit we get all the same PASSes as when native testing. The problem is that the testcase wants to create a core dump in a temporary directory and it is using the "cd" command to start the inferior with that directory as current directory, but that command only affects the inferior's cwd when native debugging. Fix it by using using the new "set cwd" command instead, which works with gdbserver as well. This still won't work with stub-like targets, because with those when we connect the inferior is already running. It'd be possible to make it work by making the inferior itself change dirs, but we'll need to make the native-gdbserver board no longer set is_remote first. gdb/testsuite/ChangeLog: 2017-10-12 Pedro Alves <palves@redhat.com> * gdb.base/auvx.exp (coredir): Update comment. (top level) <core_works>: Use "set cwd" command instead of "cd" command.
2017-10-12Add a compile-time test for PR ld/22263H.J. Lu5-0/+80
This compile-time test requires a target C compiler to run. It fails on many targets where ELF backend linkers incorrectly check bfd_link_pic for TLS relocations, which should check bfd_link_executable instead. PR ld/22263 * testsuite/ld-elf/pr22263-1.rd: New file. * testsuite/ld-elf/pr22263-1a.c: Likewise. * testsuite/ld-elf/pr22263-1b.c: Likewise. * testsuite/ld-elf/tls.exp: Likewise.
2017-10-12Use bool in pv_areaTom Tromey3-6/+13
This updates a couple of member functions in pv_area to return bool. gdb/ChangeLog 2017-10-12 Tom Tromey <tom@tromey.com> * prologue-value.h (pv_area::store_would_trash): Return bool. (pv_area::find_reg): Likewise. * prologue-value.c (pv_area::store_would_trash): Return bool. (pv_area::find_reg): Likewise.
2017-10-12C++-ify prologue-value's pv_areaTom Tromey13-424/+381
This patch is an initial C++-ification of pv_area, from prologue-value. It turns pv_area into a class with a constructor and destructor; renames the data members; and changes various functions to be member functions. This allows the removal of make_cleanup_free_pv_area. gdb/ChangeLog 2017-10-12 Tom Tromey <tom@tromey.com> * s390-linux-tdep.c (s390_store, s390_load) (s390_check_for_saved, s390_analyze_prologue): Update. * rx-tdep.c (check_for_saved, rx_analyze_prologue): Update. * rl78-tdep.c (rl78_analyze_prologue, check_for_saved): Update. * prologue-value.h (class pv_area): Move from prologue-value.c. Change names of members. Add constructor, destructor, member functions. (make_pv_area, free_pv_area, make_cleanup_free_pv_area) (pv_area_store, pv_area_fetch, pv_area_store_would_trash) (pv_area_fetch, pv_area_scan): Don't declare. * prologue-value.c (struct pv_area::area_entry): Now member of pv_area. (struct pv_area): Move to prologue-value.h. (pv_area::pv_area): Rename from make_pv_area. (pv_area::~pv_area): Rename from free_pv_area. (do_free_pv_area_cleanup, make_cleanup_free_pv_area): Remove. (clear_entries, find_entry, overlaps, store_would_trash, store) (fetch, find_reg, scan): Now member of pv_area. Remove "area" argument. Update. * msp430-tdep.c (check_for_saved, msp430_analyze_prologue): Update. * mn10300-tdep.c (push_reg, check_for_saved) (mn10300_analyze_prologue): Update. * mep-tdep.c (is_arg_spill, check_for_saved) (mep_analyze_prologue): Update. * m32c-tdep.c (m32c_pv_push, m32c_srcdest_fetch) (m32c_srcdest_store, m32c_pv_enter, m32c_is_arg_spill) (m32c_is_struct_return, m32c_analyze_prologue): Update. * arm-tdep.c (thumb_analyze_prologue, arm_analyze_prologue): Update. * arc-tdep.c (arc_is_in_prologue, arc_analyze_prologue): Update. * aarch64-tdep.c (aarch64_analyze_prologue): Update.
2017-10-12linux low: Make the arch code free arch_process_infoSimon Marchi16-2/+78
For the same reason as the previous patch, we need to make the arch-specific code free the arch_process_info structure it allocates. gdb/gdbserver/ChangeLog: * linux-low.h (struct linux_target_ops) <delete_process>: New field. * linux-low.c (linux_mourn): Call the_low_target.delete_process. * linux-aarch64-low.c (aarch64_linux_delete_process): New. (struct linux_target_ops): Add delete_process callback. * linux-arm-low.c (arm_delete_process): New. (struct linux_target_ops): Add delete_process callback. * linux-bfin-low.c (struct linux_target_ops): Likewise. * linux-crisv32-low.c (struct linux_target_ops): Likewise. * linux-m32r-low.c (struct linux_target_ops): Likewise. * linux-mips-low.c (mips_linux_delete_process): New. (struct linux_target_ops): Add delete_process callback. * linux-ppc-low.c (struct linux_target_ops): Likewise. * linux-s390-low.c (struct linux_target_ops): Likewise. * linux-sh-low.c (struct linux_target_ops): Likewise. * linux-tic6x-low.c (struct linux_target_ops): Likewise. * linux-tile-low.c (struct linux_target_ops): Likewise. * linux-x86-low.c (x86_linux_delete_process): New. (struct linux_target_ops): Add delete_process callback. * linux-xtensa-low.c (struct linux_target_ops): Likewise.
2017-10-12lwp_info: Make the arch code free arch_lwp_infoSimon Marchi27-2/+148
I have the goal of "poisoning" the XNEW/xfree-family of functions, so that we catch their usages with non-POD types. A few things need to be fixed in the mean time, this is one. The common lwp code in linux-nat.c and gdbserver/linux-low.c xfrees the private lwp data of type arch_lwp_info. However, that type is opaque from its point of view, as its defined differently in each arch-specific implementation. This trips on the std::is_pod<T> check, since the compiler can't tell whether the type is POD or not if it doesn't know about it. My initial patch [1] made a class hierarchy with a virtual destructor. However, as Pedro pointed out, we only have one native architecture at the time built in gdb and gdbserver, so that's overkill. Instead, we can move the responsibility of free'ing arch_lwp_info to the arch code (which is also the one that allocated it in the first place). This is what this patch does. Also, I had the concern that if we wanted to use C++ features in these structures, we would have a problem with the one-definition rule. However, since a build will only have one version of arch_lwp_info, that's not a problem. There are changes in arch-specific files, I was only able to built-test this patch with the following cross-compilers: aarch64-linux-gnu alpha-linux-gnu arm-linux-gnueabihf hppa-linux-gnu m68k-linux-gnu mips64el-linux-gnuabi64 powerpc64-linux-gnu s390x-linux-gnu sh4-linux-gnu sparc64-linux-gnu x86_64-linux-gnu x86_64-w64-mingw32 A buildbot run didn't find any regression. [1] https://sourceware.org/ml/gdb-patches/2017-08/msg00255.html gdb/ChangeLog: * linux-nat.h (linux_nat_set_delete_thread): New declaration. * linux-nat.c (linux_nat_delete_thread): New variable. (lwp_free): Invoke linux_nat_delete_thread if set. (linux_nat_set_delete_thread): New function. * aarch64-linux-nat.c (_initialize_aarch64_linux_nat): Assign thread delete callback. * arm-linux-nat.c (arm_linux_delete_thread): New function. (_initialize_arm_linux_nat): Assign thread delete callback. * s390-linux-nat.c (s390_delete_thread): New function. (_initialize_s390_nat): Assign thread delete callback. * x86-linux-nat.c (x86_linux_add_target): Likewise. * nat/aarch64-linux.c (aarch64_linux_delete_thread): New function. * nat/aarch64-linux.h (aarch64_linux_delete_thread): New declaration. * nat/x86-linux.c (x86_linux_delete_thread): New function. * nat/x86-linux.h (x86_linux_delete_thread): New declaration. gdb/gdbserver/ChangeLog: * linux-aarch64-low.c (the_low_target): Add thread delete callback. * linux-arm-low.c (arm_delete_thread): New function. (the_low_target): Add thread delete callback. * linux-bfin-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-low.c (delete_lwp): Invoke delete_thread callback if set. * linux-low.h (struct linux_target_ops) <delete_thread>: New field. * linux-m32r-low.c (the_low_target): Add thread delete callback. * linux-mips-low.c (mips_linux_delete_thread): New function. (the_low_target): Add thread delete callback. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-tile-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise.
2017-10-12Run gdb.base/catch-fork-static.exp on remote target boardsPedro Alves2-4/+6
Another case of a stale check. We support following forks in the remote protocol nowadays. gdb/testsuite/ChangeLog: 2017-10-12 Pedro Alves <palves@redhat.com> Simon Marchi <simon.marchi@polymtl.ca> * gdb.base/catch-fork-static.exp: No longer skip on is_remote target boards.
2017-10-12checkpoint.exp: Check for non-"target native" instead of isnative/is_remotePedro Alves2-4/+12
This gets rid of a number of FAILs with --target_board=native-extended-gdbserver. The fact that checkpointing does not work has nothing to do with dejagnu's native and remote concepts. It only works with native Linux targets because the implementation is currently baked with linux-nat.c. gdb/testsuite/ChangeLog: 2017-10-12 Pedro Alves <palves@redhat.com> Simon Marchi <simon.marchi@polymtl.ca> * gdb.base/checkpoint.exp: Don't check is_remote or isnative. Instead skip if there's any gdb_protocol set.