aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-11-26Add add_internal_function overloadTom Tromey4-13/+54
add_internal_function sets a command destroyer that frees the doc string. However, many callers do not pass in an allocated doc string. This adds a new overload to clearly differentiate the two cases, fixing the latent bug. gdb/ChangeLog 2019-11-26 Tom Tromey <tom@tromey.com> * value.h (add_internal_function): Add new overload. Move documentation from value.h. * value.c (do_add_internal_function): New function. (add_internal_function): Use it. Add new overload. (function_destroyer): Don't free doc. * python/py-function.c (fnpy_init): Update. Change-Id: I3f6df925bc6b3e1bccbad9eeebc487b908bb5a2a
2019-11-26Use cmd_list_element::doc_allocated for Python commandsTom Tromey2-3/+7
Python commands manage their "doc" string manually, but cmd_list_element already has doc_allocated to handle this case. This changes the Python code to use the existing facility. gdb/ChangeLog 2019-11-26 Tom Tromey <tom@tromey.com> * python/py-cmd.c (cmdpy_destroyer): Don't free "doc". (cmdpy_init): Set "doc_allocated". Change-Id: I0014edc117b051bba1f4db267687d231e7fe9b56
2019-11-26Set names of worker threadsTom Tromey8-9/+45
This adds some configury so that gdb can set the names of worker threads. This makes them show up more nicely when debugging gdb itself. 2019-11-26 Tom Tromey <tom@tromey.com> * gdbsupport/thread-pool.c (thread_pool::set_thread_count): Set name of worker thread. * gdbsupport/common.m4 (GDB_AC_COMMON): Check for pthread_setname_np. * configure, config.in: Rebuild. gdb/gdbserver/ChangeLog 2019-11-26 Tom Tromey <tom@tromey.com> * configure, config.in: Rebuild. Change-Id: I60473d65ae9ae14d8c56ddde39684240c16aaf35
2019-11-26Use run_on_main_thread in gdb.post_eventTom Tromey2-72/+71
This changes gdb.post_event to use the new run_on_main_thread function. This is somewhat tricky because the Python GIL must be held while manipulating reference counts. 2019-11-26 Tom Tromey <tom@tromey.com> * python/python.c (class gdbpy_gil): New. (struct gdbpy_event): Add constructor, destructor, operator(). (gdbpy_post_event): Use run_on_main_thread. (gdbpy_initialize_events): Remove. (do_start_initialization): Update. Change-Id: Ie4431e60f328dae48bd96b6c6a8e875e70bda1de
2019-11-26Add maint set/show worker-threadsTom Tromey5-0/+77
This adds maint commands to control the number of worker threads that gdb can use. 2019-11-26 Tom Tromey <tom@tromey.com> * NEWS: Add entry. * maint.c (_initialize_maint_cmds): Add "worker-threads" maint commands. Call update_thread_pool_size. (update_thread_pool_size, maintenance_set_worker_threads): New functions. (n_worker_threads): New global. gdb/doc/ChangeLog 2019-11-26 Tom Tromey <tom@tromey.com> * gdb.texinfo (Maintenance Commands): Document new maint commands. Change-Id: I4fb514faa05879d8afe62c77036a4469d57dca2a
2019-11-26Demangle minsyms in parallelTom Tromey6-18/+158
This patch introduces a simple parallel for_each and changes the minimal symbol reader to use it when computing the demangled name for a minimal symbol. This yields a speedup when reading minimal symbols. 2019-11-26 Christian Biesinger <cbiesinger@google.com> Tom Tromey <tom@tromey.com> * minsyms.c (minimal_symbol_reader::install): Use parallel_for_each. * gdbsupport/parallel-for.h: New file. * Makefile.in (HFILES_NO_SRCDIR): Add gdbsupport/parallel-for.h. Change-Id: I220341f70e94dd02df5dd424272c50a5afb64978
2019-11-26Implement a thread poolChristian Biesinger4-0/+228
This adds a simple thread pool to gdb. In the end, this seemed preferable to the approach taken in an earlier version of this series; namely, starting threads in the parallel-foreach implementation. This approach reduces the overhead of starting new threads, and also lets the user control (in a subsequent patch) exactly how many worker threads are running. gdb/ChangeLog 2019-11-26 Christian Biesinger <cbiesinger@google.com> Tom Tromey <tom@tromey.com> * gdbsupport/thread-pool.h: New file. * gdbsupport/thread-pool.c: New file. * Makefile.in (COMMON_SFILES): Add thread-pool.c. (HFILES_NO_SRCDIR): Add thread-pool.h. Change-Id: I597bb642780cb9d578ca92373d2a638efb44fe52
2019-11-26Introduce thread-safe way to handle SIGSEGVTom Tromey4-73/+131
The gdb demangler installs a SIGSEGV handler in order to protect gdb from demangler bugs. However, this is not thread-safe, as signal handlers are global to the process. This patch changes gdb to always install a global SIGSEGV handler, and then lets threads indicate their interest in handling the signal by setting a thread-local variable. This patch then arranges for the demangler code to use this; being sure to arrange for calls to warning and the like to be done on the main thread. One thing I wondered while writing this patch is if there are any systems that do not have "sigaction". If gdb could assume this, it would simplify this code. gdb/ChangeLog 2019-11-26 Tom Tromey <tom@tromey.com> * event-top.h (thread_local_segv_handler): Declare. * event-top.c (thread_local_segv_handler): New global. (install_handle_sigsegv, handle_sigsegv): New functions. (async_init_signals): Install SIGSEGV handler. * cp-support.c (gdb_demangle_jmp_buf): Change type. Now thread-local. (report_failed_demangle): New function. (gdb_demangle): Make core_dump_allowed atomic. Remove signal handler-setting code, instead use segv_handler. Run warning code on main thread. Change-Id: Ic832bbb033b64744e4b44f14b41db7e4168ce427
2019-11-26Introduce run_on_main_threadTom Tromey5-0/+218
This introduces a way for a callback to be run on the main thread. gdb/ChangeLog 2019-11-26 Tom Tromey <tom@tromey.com> * run-on-main-thread.c: New file. * run-on-main-thread.h: New file. * unittests/main-thread-selftests.c: New file. * Makefile.in (SUBDIR_UNITTESTS_SRCS): Add main-thread-selftests.c. (HFILES_NO_SRCDIR): Add run-on-main-thread.h. (COMMON_SFILES): Add run-on-main-thread.c. Change-Id: I16ef82f0564e9f8a524bdc64cb31df79a988ad9f
2019-11-26Introduce alternate_signal_stack RAII classTom Tromey3-24/+78
This introduces a new RAII class that temporarily installs an alternate signal stack (on systems that have sigaltstack); then changes the one gdb use of sigaltstack to use this class instead. This will be used in a later patch, when creating new threads that may want to handle SIGSEGV. gdb/ChangeLog 2019-11-26 Tom Tromey <tom@tromey.com> * main.c (setup_alternate_signal_stack): Remove. (captured_main_1): Use gdb::alternate_signal_stack. * gdbsupport/alt-stack.h: New file. Change-Id: I721c047ae9d51a35fd274a6dbc00a58c6440dae6
2019-11-26Add RAII class for blocking gdb signalsTom Tromey17-38/+391
This adds configury support and an RAII class that can be used to temporarily block signals that are used by gdb. (This class is not used in this patch, but it split out for easier review.) The idea of this patch is that these signals should only be delivered to the main thread. So, when creating a background thread, they are temporarily blocked; the blocked state is inherited by the new thread. The sigprocmask man page says: The use of sigprocmask() is unspecified in a multithreaded process; see pthread_sigmask(3). This patch changes gdb to use pthread_sigmask when appropriate, by introducing a convenience define. I've updated gdbserver as well, because I had to touch gdbsupport, and because the threading patches will make it link against the thread library. I chose not to touch the NTO code, because I don't know anything about that platform and because I cannot test it. Finally, this modifies an existing spot in the Guile layer to use the new facility. gdb/ChangeLog 2019-11-26 Tom Tromey <tom@tromey.com> * gdbsupport/signals-state-save-restore.c (original_signal_mask): Remove comment. (save_original_signals_state, restore_original_signals_state): Use gdb_sigmask. * linux-nat.c (block_child_signals, restore_child_signals_mask) (_initialize_linux_nat): Use gdb_sigmask. * guile/guile.c (_initialize_guile): Use block_signals. * Makefile.in (HFILES_NO_SRCDIR): Add gdb-sigmask.h. * gdbsupport/gdb-sigmask.h: New file. * event-top.c (async_sigtstp_handler): Use gdb_sigmask. * cp-support.c (gdb_demangle): Use gdb_sigmask. * gdbsupport/common.m4 (GDB_AC_COMMON): Check for pthread_sigmask. * configure, config.in: Rebuild. * gdbsupport/block-signals.h: New file. gdb/gdbserver/ChangeLog 2019-11-26 Tom Tromey <tom@tromey.com> * remote-utils.c (block_unblock_async_io): Use gdb_sigmask. * linux-low.c (linux_wait_for_event_filtered, linux_async): Use gdb_sigmask. * configure, config.in: Rebuild. Change-Id: If3f37dc57dd859c226e9e4d79458a0514746e8c6
2019-11-26Add configure check for std::threadTom Tromey11-6/+1615
This adds a configure check for std::thread. This is needed because std::thread is not available on some systems, like some versions of mingw and DJGPP. This also adds configury to make sure that a threaded gdb links against the correct threading library (-lpthread or the like), and passes the right flags (e.g., -pthread) to the compilations. Note that this also links gdbserver against the thread library. This is not strictly necessary at this point in the series, but a later patch will change gdbsupport to use pthread_sigmask, at which point this will be needed. gdb/ChangeLog 2019-11-26 Tom Tromey <tom@tromey.com> * acinclude.m4: Include ax_pthread.m4. * Makefile.in (PTHREAD_CFLAGS, PTHREAD_LIBS): New variables. (INTERNAL_CFLAGS_BASE): Use PTHREAD_CFLAGS. (CLIBS): Use PTHREAD_LIBS. (aclocal_m4_deps): Add ax_pthread.m4. * config.in, configure: Rebuild. * gdbsupport/common.m4 (GDB_AC_COMMON): Check for std::thread. gdb/gdbserver/ChangeLog 2019-11-26 Tom Tromey <tom@tromey.com> * Makefile.in (PTHREAD_CFLAGS, PTHREAD_LIBS): New variables. (INTERNAL_CFLAGS_BASE): Use PTHREAD_CFLAGS. (GDBSERVER_LIBS): Use PTHREAD_LIBS. * acinclude.m4: Include ax_pthread.m4. * config.in, configure: Rebuild. Change-Id: I00ec55db6077f2615421a93461fc3be57e916aa0
2019-11-26Defer minimal symbol name-settingTom Tromey3-1/+28
Currently the demangled name of a minimal symbol is set when creating the symbol. However, there is no intrinsic need to do this. This patch instead arranges for the demangling to be done just before the minsym hash tables are filled. This will be useful in a later patch. gdb/ChangeLog 2019-11-26 Tom Tromey <tom@tromey.com> * symtab.h (struct minimal_symbol) <name_set>: New member. * minsyms.c (minimal_symbol_reader::record_full): Copy name. Don't call symbol_set_names. (minimal_symbol_reader::install): Call symbol_set_names. Change-Id: I4fe3993b99fb3a43968067806e294d48e377fd76
2019-11-26Fix crashes due to python GIL released too earlyPhilippe Waroquiers2-1/+7
When running GDB tests under Valgrind, various tests are failing due to invalid memory access. Here is the stack trace reported by Valgrind, for gdb.base/freebpcmd.exp : ==18658== Invalid read of size 8 ==18658== at 0x7F9107: is_main (signalmodule.c:195) ==18658== by 0x7F9107: PyOS_InterruptOccurred (signalmodule.c:1730) ==18658== by 0x3696E2: check_quit_flag() (extension.c:829) ==18658== by 0x36980B: restore_active_ext_lang(active_ext_lang_state*) (extension.c:782) ==18658== by 0x48F617: gdbpy_enter::~gdbpy_enter() (python.c:235) ==18658== by 0x47BB71: add_thread_object(thread_info*) (object.h:470) ==18658== by 0x53A84D: operator() (std_function.h:687) ==18658== by 0x53A84D: notify (observable.h:106) ==18658== by 0x53A84D: add_thread_silent(ptid_t) (thread.c:311) ==18658== by 0x3CD954: inf_ptrace_target::create_inferior(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const& , char**, int) (inf-ptrace.c:139) ==18658== by 0x3FE644: linux_nat_target::create_inferior(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char**, int) (linux-nat.c:1094) ==18658== by 0x3D5727: run_command_1(char const*, int, run_how) (infcmd.c:633) ==18658== by 0x2C05D1: cmd_func(cmd_list_element*, char const*, int) (cli-decode.c:1948) ==18658== by 0x53F29F: execute_command(char const*, int) (top.c:639) ==18658== by 0x3638EB: command_handler(char const*) (event-top.c:586) ==18658== by 0x36468C: command_line_handler(std::unique_ptr<char, gdb::xfree_deleter<char> >&&) (event-top.c:771) ==18658== by 0x36407C: gdb_rl_callback_handler(char*) (event-top.c:217) ==18658== by 0x5B2A1F: rl_callback_read_char (callback.c:281) ==18658== by 0x36346D: gdb_rl_callback_read_char_wrapper_noexcept() (event-top.c:175) ==18658== by 0x363F70: gdb_rl_callback_read_char_wrapper(void*) (event-top.c:192) ==18658== by 0x3633AF: stdin_event_handler(int, void*) (event-top.c:514) ==18658== by 0x362504: gdb_wait_for_event (event-loop.c:857) ==18658== by 0x362504: gdb_wait_for_event(int) (event-loop.c:744) ==18658== by 0x362676: gdb_do_one_event() [clone .part.11] (event-loop.c:321) ==18658== by 0x3627AD: gdb_do_one_event (event-loop.c:303) ==18658== by 0x3627AD: start_event_loop() (event-loop.c:370) ==18658== by 0x41D35A: captured_command_loop() (main.c:381) ==18658== by 0x41F2A4: captured_main (main.c:1224) ==18658== by 0x41F2A4: gdb_main(captured_main_args*) (main.c:1239) ==18658== by 0x227D0A: main (gdb.c:32) ==18658== Address 0x10 is not stack'd, malloc'd or (recently) free'd The problem seems to be created by gdbpy_enter::~gdbpy_enter () releasing the GIL lock too early: ~gdbpy_enter () does: ... PyGILState_Release (m_state); python_gdbarch = m_gdbarch; python_language = m_language; restore_active_ext_lang (m_previous_active); } So, it releases the GIL lock, does 2 assignments and then leads to the following call sequence: restore_active_ext_lang => check_quit_flag => python.c gdbpy_check_quit_flag => PyOS_InterruptOccurred => is_main. is_main code is: static int is_main(_PyRuntimeState *runtime) { unsigned long thread = PyThread_get_thread_ident(); PyInterpreterState *interp = _PyRuntimeState_GetThreadState(runtime)->interp; return (thread == runtime->main_thread && interp == runtime->interpreters.main); } The macros and functions to access the thread state are documented as: /* Variable and macro for in-line access to current thread and interpreter state */ #define _PyRuntimeState_GetThreadState(runtime) \ ((PyThreadState*)_Py_atomic_load_relaxed(&(runtime)->gilstate.tstate_current)) /* Get the current Python thread state. Efficient macro reading directly the 'gilstate.tstate_current' atomic variable. The macro is unsafe: it does not check for error and it can return NULL. The caller must hold the GIL. See also PyThreadState_Get() and PyThreadState_GET(). */ #define _PyThreadState_GET() _PyRuntimeState_GetThreadState(&_PyRuntime) So, we see that GDB releases the GIL and then potentially calls _PyRuntimeState_GetThreadState that needs the GIL. It is not very clear why the problem is only observed when running under Valgrind. Probably caused by the slowdown due to Valgrind and/or to the 'single thread' scheduling by Valgrind. This patch fixes the crashes by releasing the GIT lock later. 2019-11-26 Philippe Waroquiers <philippe.waroquiers@skynet.be> * python/python.c (gdbpy_enter::~gdbpy_enter): Release GIL after restore_active_ext_lang, as GIL is needed for (indirectly) called PyOS_InterruptOccurred.
2019-11-26Fix declaration of sparc_xfer_wcookieSimon Marchi2-1/+6
When building sparc-nat.c with -Wmissing-declarations, we get: CXX sparc-nat.o /home/smarchi/src/binutils-gdb/gdb/sparc-nat.c: In function ‘target_xfer_status sparc_xfer_wcookie(target_ops*, target_object, const char*, gdb_byte*, const gdb_byte*, ULONGEST, ULONGEST, ULONGEST*)’: /home/smarchi/src/binutils-gdb/gdb/sparc-nat.c:255:1: error: no previous declaration for ‘target_xfer_status sparc_xfer_wcookie(target_ops*, target_object, const char*, gdb_byte*, const gdb_byte*, ULONGEST, ULONGEST, ULONGEST*)’ [-Werror=missing-declarations] sparc_xfer_wcookie (struct target_ops *ops, enum target_object object, ^~~~~~~~~~~~~~~~~~ Indeed, the declaration is not in sync with the definition, fix that. sparc_xfer_wcookie is used in sparc_target::xfer_partial. sparc_target is only used in the BSD sparc native files. The error above was obtained by running "make sparc-nat.o" on Linux with a cross-compiler for sparc64-linux-gnu. But I presume that if we were to build for real with a BSD/sparc compiler, we would end up with an undefined symbol. gdb/ChangeLog: * sparc-nat.c (sparc_xfer_wcookie): Sync declaration with definition. Change-Id: Id41e706e5516968ff6a49469ddc48eceb29dd3ea
2019-11-26Remove simulator_command declaration, make staticSimon Marchi2-3/+6
The simulator_command function is not used outside its file, so make it static. Remove the declaration, which is not needed and not even in sync with the definition. gdb/ChangeLog: * remote-sim.c (simulator_command): Make static, remove declaration. Change-Id: I40bd1e3662f849c4c9970443931ab9ee0ccccea1
2019-11-26Make functions static in unittestsSimon Marchi40-103/+199
Enabling -Wmissing-declarations points out that a bunch of function in the unittests can be made static, do that. gdb/ChangeLog: * unittests/array-view-selftests.c (check_ptr_size_ctor2): Make static. * unittests/basic_string_view/capacity/1.cc (test01): Likewise. * unittests/basic_string_view/cons/char/1.cc (test01): Likewise. (main): Likewise. * unittests/basic_string_view/cons/char/2.cc (test03): Likewise. (main): Likewise. * unittests/basic_string_view/cons/char/3.cc (test05): Likewise. (main): Likewise. * unittests/basic_string_view/element_access/char/1.cc (test01): Likewise. (main): Likewise. * unittests/basic_string_view/element_access/char/empty.cc (main): Likewise. * unittests/basic_string_view/element_access/char/front_back.cc (test01): Likewise. (main): Likewise. * unittests/basic_string_view/inserters/char/2.cc (test05): Likewise. (main): Likewise. * unittests/basic_string_view/modifiers/remove_prefix/char/1.cc (test01): Likewise. (main): Likewise. * unittests/basic_string_view/modifiers/remove_suffix/char/1.cc (test01): Likewise. (main): Likewise. * unittests/basic_string_view/modifiers/swap/char/1.cc (test01): Likewise. * unittests/basic_string_view/operations/compare/char/1.cc (test01): Likewise. (main): Likewise. * unittests/basic_string_view/operations/compare/char/13650.cc (test01): Likewise. * unittests/basic_string_view/operations/copy/char/1.cc (test01): Likewise. (main): Likewise. * unittests/basic_string_view/operations/data/char/1.cc (test01): Likewise. (main): Likewise. * unittests/basic_string_view/operations/find/char/1.cc (test01): Likewise. (main): Likewise. * unittests/basic_string_view/operations/find/char/2.cc (test02): Likewise. (main): Likewise. * unittests/basic_string_view/operations/find/char/3.cc (test03): Likewise. (main): Likewise. * unittests/basic_string_view/operations/find/char/4.cc (main): Likewise. * unittests/basic_string_view/operations/rfind/char/1.cc (test01): Likewise. (main): Likewise. * unittests/basic_string_view/operations/rfind/char/2.cc (test02): Likewise. (main): Likewise. * unittests/basic_string_view/operations/rfind/char/3.cc (test03): Likewise. (main): Likewise. * unittests/basic_string_view/operations/substr/char/1.cc (test01): Likewise. (main): Likewise. * unittests/basic_string_view/operators/char/2.cc (main): Likewise. * unittests/optional/assignment/1.cc (test): Likewise. * unittests/optional/assignment/2.cc (test): Likewise. * unittests/optional/assignment/3.cc (test): Likewise. * unittests/optional/assignment/4.cc (test): Likewise. * unittests/optional/assignment/5.cc (test): Likewise. * unittests/optional/assignment/6.cc (test): Likewise. * unittests/optional/assignment/7.cc (test): Likewise. * unittests/optional/cons/copy.cc (test): Likewise. * unittests/optional/cons/default.cc (test): Likewise. * unittests/optional/cons/move.cc (test): Likewise. * unittests/optional/cons/value.cc (test): Likewise. * unittests/optional/in_place.cc (test): Likewise. * unittests/optional/observers/1.cc (test): Likewise. * unittests/optional/observers/2.cc (test): Likewise. Change-Id: I66626db864cb877cacc570d4660df633530554f5
2019-11-26Remove declaration of tui_set_var_cmd, make definition staticSimon Marchi3-4/+7
The declaration of tui_set_var_cmd is not in sync with the definition. Since tui_set_var_cmd is only used in the file where it's defined, remove the declaration and make the definition static. gdb/ChangeLog: * tui-win.h (tui_set_var_cmd): Remove. * tui-win.c (tui_set_var_cmd): Make static. Change-Id: If4bddbfb573347fb7254fb6f1a940052a72f464f
2019-11-26Remove unused rbreak_command_wrapper and other declarationsSimon Marchi3-11/+6
rbreak_command_wrapper is unused, so remove it. And while at it, remove other declarations around it. gdb/ChangeLog: * breakpoint.h (hbreak_command_wrapper, thbreak_command_wrapper, rbreak_command_wrapper): Remove. * symtab.c (rbreak_command_wrapper): Remove. Change-Id: If9782f205e4913f8dfc5beeaa526544f25e099c6
2019-11-26Remove info_terminal_command declaration, make definition staticSimon Marchi3-3/+6
The info_terminal_command declaration in inflow.h does not match the current definition. It is not needed anyway, as info_terminal_command is only used locally, so remove it and make the definition static. gdb/ChangeLog: * inferior.h (info_terminal_command): Remove declaration. * inflow.c (info_terminal_command): Make static. Change-Id: I22c3fcc44244e3cf877b5e27eff189af11c39503
2019-11-26Remove unused overload of exit_inferior_silentSimon Marchi2-8/+4
This function is not used in the code base. gdb/ChangeLog: * inferior.c (exit_inferior_silent): Remove. Change-Id: Ib2b7662744da079185ceac2a165b47590bd3113c
2019-11-26Remove dict_empty/mdict_emptySimon Marchi3-28/+5
These functions are not used in the code base, remove them. gdb/ChangeLog: * dictionary.c (dict_empty, mdict_empty): Remove. * dictionary.c (mdict_empty): Remove. Change-Id: I4c1b08c730f6790b2f3d28b680607618e3c08e48
2019-11-26Make a bunch of functions staticSimon Marchi16-21/+46
All these functions are only used in their respective files, they are missing the static keyword, add them. gdb/ChangeLog: * arc-tdep.c (arc_insn_get_memory_base_reg): Make static. (arc_insn_get_memory_offset): Likewise. (arc_insn_dump): Likewise. * cp-support.c (test_cp_symbol_name_matches): Likewise. * csky-linux-tdep.c (csky_supply_fregset): Likewise. * dictionary.c (dict_iterator_next): Likewise. (dict_iter_match_first): Likewise. (dict_iter_match_next): Likewise. * f-lang.c (evaluate_subexp_f): Likewise. * hppa-tdep.c (hppa_read_pc): Likewise. * i386-tdep.c (i386_floatformat_for_type): Likewise. * parse.c (write_exp_elt_msym): Likewise. * ppc-linux-tdep.c (ppc_floatformat_for_type): Likewise. * remote.c (remote_packet_size): Likewise. (remote_notif_stop_parse): Likewise. * rs6000-aix-tdep.c (aix_sighandle_frame_sniffer): Likewise. * s12z-tdep.c (s12z_disassemble_info): Likewise. * source.c (prepare_path_for_appending): Likewise. * sparc64-linux-tdep.c (sparc64_linux_handle_segmentation_fault); Likewise. * stack.c (frame_selection_by_function_completer): Likewise. Change-Id: I18e187ad279075b961e3e22e5b034f5c0f6188f0
2019-11-26Remove unused function set_gdb_completion_word_break_charactersSimon Marchi2-17/+5
gdb/ChangeLog: * completer.c (set_gdb_completion_word_break_characters): Remove. Change-Id: If39b8d01f215a42ea3d01fb8290014613ec0bb8b
2019-11-26Add missing includes in dwarf-index-write.c and mi/mi-interp.cSimon Marchi3-0/+10
The following errors show that these files are missing the include of their matching header, add them. CXX dwarf-index-write.o /home/smarchi/src/binutils-gdb/gdb/dwarf-index-write.c: In function ‘void write_psymtabs_to_index(dwarf2_per_objfile*, const char*, const char*, const char*, dw_index_kind)’: /home/smarchi/src/binutils-gdb/gdb/dwarf-index-write.c:1670:1: error: no previous declaration for ‘void write_psymtabs_to_index(dwarf2_per_objfile*, const char*, const char*, const char*, dw_index_kind)’ [-Werror=missing-declarations] write_psymtabs_to_index (struct dwarf2_per_objfile *dwarf2_per_objfile, ^~~~~~~~~~~~~~~~~~~~~~~ CXX mi/mi-interp.o /home/smarchi/src/binutils-gdb/gdb/mi/mi-interp.c: In function ‘void mi_output_solib_attribs(ui_out*, so_list*)’: /home/smarchi/src/binutils-gdb/gdb/mi/mi-interp.c:1030:1: error: no previous declaration for ‘void mi_output_solib_attribs(ui_out*, so_list*)’ [-Werror=missing-declarations] mi_output_solib_attribs (ui_out *uiout, struct so_list *solib) ^~~~~~~~~~~~~~~~~~~~~~~ gdb/ChangeLog: * dwarf-index-write.c: Include dwarf-index-write.h. * mi/mi-interp.c: Include mi/mi-interp.h. Change-Id: I0103b8669e16e0fcaa476f8c5e96f49608157745
2019-11-26Include aarch32-tdep.h in aarch32-tdep.cSimon Marchi3-0/+10
The error below shows that aarch32-tdep.c is missing an include for aarch32-tdep.h, add it. CXX aarch32-tdep.o /home/smarchi/src/binutils-gdb/gdb/aarch32-tdep.c: In function ‘const target_desc* aarch32_read_description()’: /home/smarchi/src/binutils-gdb/gdb/aarch32-tdep.c:27:1: error: no previous declaration for ‘const target_desc* aarch32_read_description()’ [-Werror=missing-declarations] aarch32_read_description () ^~~~~~~~~~~~~~~~~~~~~~~~ Putting the include of aarch32-tdep.h early in aarch32-tdep.c gives us an error about target_desc not being defined. Indeed, aarch32-tdep.h uses target_desc without forward-declaring it or including the proper header. Add a forward-declaration for it. gdb/ChangeLog: * aarch32-tdep.c: Include aarch32-tdep.h. * aarch32-tdep.h: Forward-declare struct target_desc. Change-Id: Ica4be4de0fbd7f22d56a29a40fbf0a31b5abdb16
2019-11-26Use safe_strerror instead of strerror where possibleChristian Biesinger10-22/+48
This provides threadsafety. Unfortunately, since libinproctrace.so does not link to gnulib, we can't use it there, especially since it still includes the gnulib headers (so it is difficult to directly call the system strerror_r). gdb/ChangeLog: 2019-11-26 Christian Biesinger <cbiesinger@google.com> * linux-nat.c (detach_one_lwp): Call safe_strerror instead of strerror. * nto-procfs.c (nto_procfs_target::create_inferior): Likewise. * windows-nat.c (windows_nat_target::create_inferior): Likewise. gdb/gdbserver/ChangeLog: 2019-11-26 Christian Biesinger <cbiesinger@google.com> * debug.c (debug_set_output): Call safe_strerror instead of strerror. * linux-low.c (attach_proc_task_lwp_callback): Likewise. (linux_kill_one_lwp): Likewise. (linux_detach_one_lwp): Likewise. (linux_wait_for_event_filtered): Likewise. (store_register): Likewise. * lynx-low.c (lynx_attach): Likewise. * mem-break.c (insert_memory_breakpoint): Likewise. (remove_memory_breakpoint): Likewise. (delete_fast_tracepoint_jump): Likewise. (set_fast_tracepoint_jump): Likewise. (uninsert_fast_tracepoint_jumps_at): Likewise. (reinsert_fast_tracepoint_jumps_at): Likewise. * nto-low.c (nto_xfer_memory): Likewise. (nto_resume): Likewise. Change-Id: I9e259cdcaa6e11bbcc4ee6bdc5b7127d73e11abe
2019-11-26Fix gdbserver ChangeLog entryTom Tromey2-5/+5
Christian pointed out that I had accidentally put a ChangeLog entry into gdbserver that was meant for testsuite. I'm checking in this patch to fix it. Change-Id: Iba6124cea6f63539ad66494d3355fb657b78a66d
2019-11-26Introduce new .text.sorted.* sections.Martin Liska13-3/+85
gold/ChangeLog: 2019-11-26 Martin Liska <mliska@suse.cz> * layout.cc (Layout::special_ordering_of_input_section): Add ".text.sorted". * output.cc: Special case ".text.sorted". * testsuite/section_sorting_name.cc: Cover also .text.sorted subsections. * testsuite/section_sorting_name.sh: Likewise. ld/ChangeLog: 2019-11-26 Martin Liska <mliska@suse.cz> * scripttempl/arclinux.sc: Add .text.sorted.* which is sorted by default. * scripttempl/elf.sc: Likewise. * scripttempl/elf64bpf.sc: Likewise. * scripttempl/nds32elf.sc: Likewise. * testsuite/ld-arm/arm-no-rel-plt.ld: Expect .text.sorted.* in the default linker script. * testsuite/ld-arm/fdpic-main.ld: Likewise. * testsuite/ld-arm/fdpic-shared.ld: Likewise.
2019-11-26Fix comparison operations in SH code that trigger warning in clang.Nick Clifton3-2/+8
* elf32-sh.c (sh_elf_reloc): Use a signed_vma when checking for a negative relocated value. * coff-sh.c (sh_reloc): Likewise.
2019-11-26Automatic date update in version.inGDB Administrator1-1/+1
2019-11-25[gdb/contrib] Add -c option to words.sh scriptTom de Vries2-8/+25
The words.sh script in its current form extracts c comments from files, which it then transforms into a list of words. To use the script on the documentation (as I did for commit 6b92c0d3533 "[gdb/doc] Fix typos"), I needed to disable the "extract c comments" part. Add an option -c that enables extracting c comments, and is off by default. gdb/ChangeLog: 2019-11-25 Tom de Vries <tdevries@suse.de> * contrib/words.sh: Add -c option. Change-Id: Ifa34d435b3c41b3ff845dc07ae4b0d9f02d92a2d
2019-11-25Replace int with bool in solib.cChristian Biesinger3-53/+67
This does not touch "int from_tty" and a couple of other instances that require a bigger change. gdb/ChangeLog: 2019-11-25 Christian Biesinger <cbiesinger@google.com> * solib.c (solib_find_1): Change int to bool. (exec_file_find): Change int to bool. (solib_find): Change int to bool. (solib_read_symbols): Change int to bool. (solib_used): Change int to bool. (solib_add): Change int to bool. (info_sharedlibrary_command): Change int to bool. (solib_contains_address_p): Change int to bool. (solib_keep_data_in_core): Change int to bool. (in_solib_dynsym_resolve_code): Change int to bool. (reload_shared_libraries_1): Change int to bool. (gdb_sysroot_changed): Change int to bool. * solib.h (solib_read_symbols): Change int to bool. (solib_contains_address_p): Change int to bool. (solib_keep_data_in_core): Change int to bool. (in_solib_dynsym_resolve_code): Change int to bool. (libpthread_name_p): Change int to bool. Change-Id: Id695ed4ed0c3526af477d4d2bf585a7193c36cab
2019-11-25Fix "psb CSYNC" and "bti C".Andrew Pinski7-3/+25
psb CYSNC was not finding that CSYNC was a correct spelling. The problem was upper case version was being put in the wrong hashtable. This fixes the problem by using the correct hashtable. Also adds testcases for the upper case versions. * config/tc-aarch64.c (md_begin): Use correct hash table for uppercase version of hint. * testsuite/gas/aarch64/system-2.s: Extend psb case to uppercase. * testsuite/gas/aarch64/system-2.d: Update. Change-Id: If43f8b85cacd24840d596c3092b0345e5f212766
2019-11-25[Debugging output] Make remote packet truncation length adjustableLuis Machado5-11/+79
While debugging, i felt the need to adjust the truncation length of remote packets so i could see more or less data as needed. The default is currently set to 512 bytes. This patch makes this option adjustable through the new "set debug remote-packet-max-chars" command. It can be set to unlimited if we want to completely disable truncation. Update on v5: - Adjusted function and variable documentation, NEWS entry and GDB manual. gdb/ChangeLog: 2019-11-25 Luis Machado <luis.machado@linaro.org> * NEWS (New Commands): Mention "set debug remote-packet-max-chars". * remote.c (REMOTE_DEBUG_MAX_CHAR): Remove. (remote_packet_max_chars): New static global. (show_remote_packet_max_chars): New function. (remote_target::putpkt_binary): Adjust to use new remote_packet_max_chars option. (remote_target::getpkt_or_notif_sane_1): Likewise. (_initialize_remote): Register new remote-packet-max-chars option. gdb/doc/ChangeLog: 2019-11-25 Luis Machado <luis.machado@linaro.org> * gdb.texinfo (Debugging Output): Document set debug remote-packet-max-chars. Change-Id: I2e871b37bfcaa6376537c3fe3db8f016dd806a7c
2019-11-25Pass section when available to bfd_octets_per_byteAlan Modra25-124/+184
and other tidies. I think it's better to default to passing the section to bfd_octets_per_byte, even in cases where we know it won't make a difference. A number of the coff reloc functions used bfd_octets_per_byte wrongly, not factoring it into the offset into the data buffer. As it happens, the targets using those files always had bfd_octets_per_byte equal to one, so there wasn't any detectable wrong behaviour. However, it is wrong in the source and might cause trouble for anyone creating a new target. Besides fixing that, the patch also defines OCTETS_PER_BYTE as one in target files where that is appropriate. bfd/ * archures.c (bfd_octets_per_byte): Tail call bfd_arch_mach_octets_per_byte. * coff-arm.c (OCTETS_PER_BYTE): Define. (coff_arm_reloc): Introduce new "octets" temp. Use OCTETS_PER_BYTE with section. Correct "addr". Remove ATTRIBUTE_UNUSED. * coff-i386.c (coff_i386_reloc): Similarly. * coff-mips.c (mips_reflo_reloc): Similarly. * coff-x86_64.c (coff_amd64_reloc): Similarly. * elf32-msp430.c (OCTETS_PER_BYTE): Define. (rl78_sym_diff_handler): Use OCTETS_PER_BYTE, with section. * elf32-nds32.c (nds32_elf_get_relocated_section_contents): Similarly. * elf32-ppc.c (ppc_elf_addr16_ha_reloc): Similarly. * elf32-pru.c (pru_elf32_do_ldi32_relocate): Similarly. * elf32-s12z.c (opru18_reloc): Similarly. * elf32-sh.c (sh_elf_reloc): Similarly. * elf32-spu.c (spu_elf_rel9): Similarly. * elf32-xtensa.c (bfd_elf_xtensa_reloc): Similarly. * elf64-ppc.c (ppc64_elf_ha_reloc, ppc64_elf_brtaken_reloc), (ppc64_elf_toc64_reloc): Similarly. * bfd.c (bfd_get_section_limit): Pass section to bfd_octets_per_byte. * cofflink.c (_bfd_coff_link_input_bfd), (_bfd_coff_reloc_link_order): Likewise. * elf.c (_bfd_elf_section_offset): Likewise. * elflink.c (resolve_section, bfd_elf_perform_complex_relocation), (elf_link_input_bfd, elf_reloc_link_order, elf_fixup_link_order), (bfd_elf_final_link): Likewise. * elf.c (_bfd_elf_make_section_from_shdr): Don't strncmp twice to set SEC_ELF_OCTETS. * reloc.c (bfd_perform_relocation): Tidy SEC_ELF_OCTETS special case. (bfd_install_relocation): Likewise. (_bfd_final_link_relocate): Don't recalculate octets. * syms.c (_bfd_stab_section_find_nearest_line): Introduc new "octets" temp. * bfd-in2.h: Regenerate. ld/ * ldexp.c (fold_name): Pass section to bfd_octets_per_byte. * ldlang.c (init_opb): Don't call bfd_arch_mach_octets_per_byte unnecessarily.
2019-11-25Introduce new section flag: SEC_ELF_OCTETSChristian Eggers39-81/+279
All symbols, sizes and relocations in this section are octets instead of bytes. Required for DWARF debug sections as DWARF information is organized in octets, not bytes. bfd/ * section.c (struct bfd_section): New flag SEC_ELF_OCTETS. * archures.c (bfd_octets_per_byte): New parameter sec. If section is not NULL and SEC_ELF_OCTETS is set, one octet es returned [ELF targets only]. * bfd.c (bfd_get_section_limit): Provide section parameter to bfd_octets_per_byte. * bfd-in2.h: regenerate. * binary.c (binary_set_section_contents): Move call to bfd_octets_per_byte into section loop. Provide section parameter to bfd_octets_per_byte. * coff-arm.c (coff_arm_reloc): Provide section parameter to bfd_octets_per_byte. * coff-i386.c (coff_i386_reloc): likewise. * coff-mips.c (mips_reflo_reloc): likewise. * coff-x86_64.c (coff_amd64_reloc): likewise. * cofflink.c (_bfd_coff_link_input_bfd): likewise. (_bfd_coff_reloc_link_order): likewise. * elf.c (_bfd_elf_section_offset): likewise. (_bfd_elf_make_section_from_shdr): likewise. Set SEC_ELF_OCTETS for sections with names .gnu.build.attributes, .debug*, .zdebug* and .note.gnu*. * elf32-msp430.c (rl78_sym_diff_handler): Provide section parameter to bfd_octets_per_byte. * elf32-nds.c (nds32_elf_get_relocated_section_contents): likewise. * elf32-ppc.c (ppc_elf_addr16_ha_reloc): likewise. * elf32-pru.c (pru_elf32_do_ldi32_relocate): likewise. * elf32-s12z.c (opru18_reloc): likewise. * elf32-sh.c (sh_elf_reloc): likewise. * elf32-spu.c (spu_elf_rel9): likewise. * elf32-xtensa.c (bfd_elf_xtensa_reloc): likewise * elf64-ppc.c (ppc64_elf_brtaken_reloc): likewise. (ppc64_elf_addr16_ha_reloc): likewise. (ppc64_elf_toc64_reloc): likewise. * elflink.c (bfd_elf_final_link): likewise. (bfd_elf_perform_complex_relocation): likewise. (elf_fixup_link_order): likewise. (elf_link_input_bfd): likewise. (elf_link_sort_relocs): likewise. (elf_reloc_link_order): likewise. (resolve_section): likewise. * linker.c (_bfd_generic_reloc_link_order): likewise. (bfd_generic_define_common_symbol): likewise. (default_data_link_order): likewise. (default_indirect_link_order): likewise. * srec.c (srec_set_section_contents): likewise. (srec_write_section): likewise. * syms.c (_bfd_stab_section_find_nearest_line): likewise. * reloc.c (_bfd_final_link_relocate): likewise. (bfd_generic_get_relocated_section_contents): likewise. (bfd_install_relocation): likewise. For section which have SEC_ELF_OCTETS set, multiply output_base and output_offset with bfd_octets_per_byte. (bfd_perform_relocation): likewise. include/ * coff/ti.h (GET_SCNHDR_SIZE, PUT_SCNHDR_SIZE, GET_SCN_SCNLEN), (PUT_SCN_SCNLEN): Adjust bfd_octets_per_byte calls. binutils/ * objdump.c (disassemble_data): Provide section parameter to bfd_octets_per_byte. (dump_section): likewise (dump_section_header): likewise. Show SEC_ELF_OCTETS flag if set. gas/ * as.h: Define SEC_OCTETS as SEC_ELF_OCTETS if OBJ_ELF. * dwarf2dbg.c: (dwarf2_finish): Set section flag SEC_OCTETS for .debug_line, .debug_info, .debug_abbrev, .debug_aranges, .debug_str and .debug_ranges sections. * write.c (maybe_generate_build_notes): Set section flag SEC_OCTETS for .gnu.build.attributes section. * frags.c (frag_now_fix): Don't divide by OCTETS_PER_BYTE if SEC_OCTETS is set. * symbols.c (resolve_symbol_value): Likewise. ld/ * ldexp.c (fold_name): Provide section parameter to bfd_octets_per_byte. * ldlang (init_opb): New argument s. Set opb_shift to 0 if SEC_ELF_OCTETS for the current section is set. (print_input_section): Pass current section to init_opb. (print_data_statement,print_reloc_statement, print_padding_statement): Likewise. (lang_check_section_addresses): Call init_opb for each section. (lang_size_sections_1,lang_size_sections_1, lang_do_assignments_1): Likewise. (lang_process): Pass NULL to init_opb.
2019-11-25Reverts patches providing octet support in dwarfChristian Eggers4-63/+22
Reverts "dwarf2: Align relocation within .debug_line section" commit 204f543cae7a5dc908264b49d558191d0ceb989c, Reverts "dwarf2: Pad size of .debug_line section." commit 145c4477d239fef4e31a457ff8a1ba7153e9a448, Reverts "dwarf2: Use octets for .debug_line prologue" commit 38c24f42c97af59ad83505ed735e689c63d3ca45, Mostly reverts "dwarf2: Use octets for dwarf2 headers" commit 7235427998571b6d8267e7ac72a52d7b082f4c2b, Mostly reverts "Symbols with octets value" commit d18d199917337537713f9fc4b7ae4d6568f740cf. * dwarf2dbg.c (out_set_addr): Revert 2019-03-13 change. (out_debug_line, out_debug_aranges, out_debug_info): Likewise. * symbols.h (symbol_set_value_now_octets, symbol_octets_p): Remove. * symbols.c (struct symbol_flags): Remove member sy_octets. (symbol_temp_new_now_octets): Don't set symbol_flags::sy_octets. (resolve_symbol_value): Revert: Return octets instead of bytes if sy_octets is set. (symbol_set_value_now_octets): Remove. (symbol_octets_p): Remove.
2019-11-25Automatic date update in version.inGDB Administrator1-1/+1
2019-11-24Include gdbarch.h in m68k-linux-nat.cSimon Marchi2-0/+5
Fix this compilation error, and a bunch of similar ones: CXX m68k-linux-nat.o /home/smarchi/src/binutils-gdb/gdb/m68k-linux-nat.c: In function ‘void fetch_register(regcache*, int)’: /home/smarchi/src/binutils-gdb/gdb/m68k-linux-nat.c:133:9: error: ‘gdbarch_register_name’ was not declared in this scope gdbarch_register_name (gdbarch, regno), ^~~~~~~~~~~~~~~~~~~~~ gdb/ChangeLog: * m68k-linux-nat.c: Include gdbarch.h. Change-Id: I7cd47bc5d094241b2596e29c244eb55ed11f7a02
2019-11-24Use bool in require_partial_symbolsTom Tromey4-20/+37
This changes require_partial_symbols to use bool as its parameter type. gdb/ChangeLog 2019-11-24 Tom Tromey <tom@tromey.com> * symfile.c (read_symbols): Update. * psymtab.c (require_partial_symbols): Change type of "verbose" to bool. (psym_map_symtabs_matching_filename, find_pc_sect_psymtab) (psym_lookup_symbol, psym_find_last_source_symtab) (psym_forget_cached_source_info, psym_print_stats) (psym_expand_symtabs_for_function, psym_expand_all_symtabs) (psym_expand_symtabs_with_fullname, psym_map_symbol_filenames) (psym_map_matching_symbols, psym_expand_symtabs_matching) (psym_find_compunit_symtab_by_address) (maintenance_print_psymbols, maintenance_info_psymtabs) (maintenance_check_psymtabs): Update. * psymtab.h (require_partial_symbols): Change type of "verbose" to bool. Change-Id: Iae87aa5e4590706bb9e90a33adb86f1fe0fbf3c7
2019-11-24Automatic date update in version.inGDB Administrator1-1/+1
2019-11-23Automatic date update in version.inGDB Administrator1-1/+1
2019-11-22Restore parameter names in observable.hTom Tromey2-80/+93
Ages ago, when we switched observables to be templates, Joel asked me to restore the parameter names that were used in the old observer.texi. I've finally done this, putting the names into comments. I also updated the comments in this file to use the GNU metasyntactic variable convention as well. gdb/ChangeLog 2019-11-22 Tom Tromey <tom@tromey.com> * observable.h: Update comments. Change-Id: Id71bea7a7fcaa8f5d4491f33aa8861c56ba9c3f0
2019-11-22Avoid crash in print_ada_task_infoTom Tromey5-6/+29
In MI mode, print_ada_task_info can crash in find_thread_ptid when trying to print an Ada task that is no longer alive. This patch avoids the problem by checking for this case. Because this is Ada-specific, and because Joel approved it internally, I am checking it in. gdb/ChangeLog 2019-11-22 Tom Tromey <tromey@adacore.com> * ada-tasks.c (ada_task_is_alive): Make parameter const. (print_ada_task_info): Don't try to fetch thread id if task is not alive. gdb/gdbserver/ChangeLog 2019-11-22 Tom Tromey <tromey@adacore.com> * gdb.ada/tasks.exp: Add -ada-task-info regression test. * gdb.ada/tasks/foo.adb: Add another stopping location. Change-Id: If25eae6507eebb7537eb8adbcbaa1fc1eec88f5c
2019-11-22Replace SYMBOL_*_NAME accessors with member functionsChristian Biesinger57-376/+481
Similar to the MSYMBOL version of this patch, improves readability and will eventually allow making name private. gdb/ChangeLog: 2019-11-22 Christian Biesinger <cbiesinger@google.com> * ada-exp.y: Update. * ada-lang.c (sort_choices): Update. (ada_print_symbol_signature): Update. (resolve_subexp): Update. (ada_parse_renaming): Update. (ada_read_renaming_var_value): Update. (lesseq_defined_than): Update. (remove_extra_symbols): Update. (remove_irrelevant_renamings): Update. (ada_add_block_symbols): Update. (ada_collect_symbol_completion_matches): Update. (ada_is_renaming_symbol): Update. (aggregate_assign_from_choices): Update. (ada_evaluate_subexp): Update. (ada_has_this_exception_support): Update. (ada_is_non_standard_exception_sym): Update. (ada_add_exceptions_from_frame): Update. (ada_add_global_exceptions): Update. (ada_print_subexp): Update. * ax-gdb.c (gen_var_ref): Update. (gen_maybe_namespace_elt): Update. (gen_expr_for_cast): Update. (gen_expr): Update. * block.h: Update. * blockframe.c (find_pc_partial_function): Update. * breakpoint.c (print_breakpoint_location): Update. (update_static_tracepoint): Update. * btrace.c (ftrace_print_function_name): Update. (ftrace_function_switched): Update. * buildsym.c (find_symbol_in_list): Update. * c-exp.y: Update. * c-typeprint.c (c_print_typedef): Update. (c_type_print_template_args): Update. * cli/cli-cmds.c (edit_command): Update. (list_command): Update. (print_sal_location): Update. * coffread.c (patch_opaque_types): Update. (process_coff_symbol): Update. (coff_read_enum_type): Update. * compile/compile-c-symbols.c (c_symbol_substitution_name): Update. (convert_one_symbol): Update. (hash_symname): Update. (eq_symname): Update. * compile/compile-cplus-symbols.c (convert_one_symbol): Update. * compile/compile-cplus-types.c (debug_print_scope): Update. * compile/compile-loc2c.c (do_compile_dwarf_expr_to_c): Update. * compile/compile-object-load.c (get_out_value_type): Update. * cp-namespace.c (cp_scan_for_anonymous_namespaces): Update. (search_symbol_list): Update. (cp_lookup_symbol_imports_or_template): Update. * cp-support.c (overload_list_add_symbol): Update. * ctfread.c (psymtab_to_symtab): Update. * dbxread.c (cp_set_block_scope): Update. * dictionary.c (iter_match_first_hashed): Update. (iter_match_next_hashed): Update. (insert_symbol_hashed): Update. (iter_match_next_linear): Update. * dictionary.h: Update. * dwarf2loc.c (func_get_frame_base_dwarf_block): Update. (locexpr_describe_location_piece): Update. (locexpr_describe_location_1): Update. (locexpr_generate_c_location): Update. (loclist_describe_location): Update. (loclist_generate_c_location): Update. * dwarf2read.c (dw2_debug_names_lookup_symbol): Update. (read_func_scope): Update. (process_enumeration_scope): Update. (new_symbol): Update. (dwarf2_const_value): Update. (dwarf2_symbol_mark_computed): Update. * eval.c (evaluate_funcall): Update. (evaluate_subexp_standard): Update. * expprint.c (print_subexp_standard): Update. (dump_subexp_body_standard): Update. * f-valprint.c (info_common_command_for_block): Update. * findvar.c (get_hosting_frame): Update. (default_read_var_value): Update. * go-lang.c (go_symbol_package_name): Update. * guile/scm-block.c (bkscm_print_block_smob): Update. * guile/scm-symbol.c (syscm_print_symbol_smob): Update. (gdbscm_symbol_name): Update. (gdbscm_symbol_linkage_name): Update. (gdbscm_symbol_print_name): Update. * infcall.c (get_function_name): Update. * infcmd.c (jump_command): Update. (finish_command): Update. * infrun.c (insert_exception_resume_breakpoint): Update. * linespec.c (canonicalize_linespec): Update. (create_sals_line_offset): Update. (convert_linespec_to_sals): Update. (complete_label): Update. (find_label_symbols_in_block): Update. * m2-typeprint.c (m2_print_typedef): Update. * mdebugread.c (mdebug_reg_to_regnum): Update. (parse_symbol): Update. (mylookup_symbol): Update. * mi/mi-cmd-stack.c (list_arg_or_local): Update. (list_args_or_locals): Update. * objc-lang.c (compare_selectors): Update. (info_selectors_command): Update. (compare_classes): Update. (info_classes_command): Update. (find_imps): Update. * p-typeprint.c (pascal_print_typedef): Update. * printcmd.c (build_address_symbolic): Update. (info_address_command): Update. (print_variable_and_value): Update. * python/py-framefilter.c (extract_sym): Update. (py_print_single_arg): Update. * python/py-symbol.c (sympy_str): Update. (sympy_get_name): Update. (sympy_get_linkage_name): Update. * python/python.c (gdbpy_rbreak): Update. * record-btrace.c (btrace_get_bfun_name): Update. (btrace_call_history): Update. * rust-lang.c (rust_print_typedef): Update. * solib-frv.c (frv_fdpic_find_canonical_descriptor): Update. * stabsread.c (stab_reg_to_regnum): Update. (define_symbol): Update. (read_enum_type): Update. (common_block_end): Update. (cleanup_undefined_types_1): Update. (scan_file_globals): Update. * stack.c (print_frame_arg): Update. (print_frame_args): Update. (find_frame_funname): Update. (info_frame_command_core): Update. (iterate_over_block_locals): Update. (print_block_frame_labels): Update. (do_print_variable_and_value): Update. (iterate_over_block_arg_vars): Update. (return_command): Update. * symmisc.c (dump_symtab_1): Update. (print_symbol): Update. * symtab.c (eq_symbol_entry): Update. (symbol_cache_dump): Update. (lookup_language_this): Update. (find_pc_sect_line): Update. (skip_prologue_sal): Update. (symbol_search::compare_search_syms): Update. (treg_matches_sym_type_name): Update. (search_symbols): Update. (print_symbol_info): Update. (rbreak_command): Update. (completion_list_add_symbol): Update. (find_gnu_ifunc): Update. (get_symbol_address): Update. (search_module_symbols): Update. (info_module_subcommand): Update. * symtab.h (SYMBOL_NATURAL_NAME): Remove. (SYMBOL_LINKAGE_NAME): Remove. (SYMBOL_DEMANGLED_NAME): Remove. (SYMBOL_PRINT_NAME): Remove. (SYMBOL_SEARCH_NAME): Remove. * tracepoint.c (set_traceframe_context): Update. (validate_actionline): Update. (collection_list::collect_symbol): Update. (encode_actions_1): Update. (info_scope_command): Update. (print_one_static_tracepoint_marker): Update. * typeprint.c (typedef_hash_table::add_template_parameters): Update. * valops.c (address_of_variable): Update. (find_overload_match): Update. (find_oload_champ): Update. Change-Id: I76bdc8b44eea6876bf03af9d351f8e90cc0154b2
2019-11-22Replace the MSYMBOL_*_NAME macros with member functionsChristian Biesinger52-201/+320
Improves readability. In the future, it will also allow making the name private, once the name setter functions become member functions. gdb/ChangeLog: 2019-11-22 Christian Biesinger <cbiesinger@google.com> * ada-lang.c (ada_lookup_simple_minsym): Update. (ada_collect_symbol_completion_matches): Update. * ada-tasks.c (read_atcb): Update. * amd64-windows-tdep.c (amd64_skip_main_prologue): Update. (amd64_windows_skip_trampoline_code): Update. * arm-tdep.c (skip_prologue_function): Update. (arm_skip_stack_protector): Update. * arm-wince-tdep.c (arm_pe_skip_trampoline_code): Update. (arm_wince_skip_main_prologue): Update. * ax-gdb.c (gen_expr): Update. * block.c (call_site_for_pc): Update. * blockframe.c (find_pc_partial_function): Update. * breakpoint.c (set_breakpoint_location_function): Update. * btrace.c (ftrace_print_function_name): Update. (ftrace_function_switched): Update. * c-valprint.c (print_unpacked_pointer): Update. * coffread.c (coff_symfile_read): Update. * compile/compile-c-symbols.c (convert_symbol_bmsym): Update. * compile/compile-cplus-symbols.c (convert_symbol_bmsym): Update. * dwarf-index-write.c (write_psymbols): Update. * dwarf2loc.c (call_site_to_target_addr): Update. (func_verify_no_selftailcall): Update. (tailcall_dump): Update. (call_site_find_chain_1): Update. (dwarf_expr_reg_to_entry_parameter): Update. * elfread.c (elf_gnu_ifunc_record_cache): Update. * eval.c (evaluate_funcall): Update. (evaluate_subexp_standard): Update. (evaluate_subexp_for_sizeof): Update. * expprint.c (print_subexp_standard): Update. (dump_subexp_body_standard): Update. * frame.c (get_prev_frame_always_1): Update. * frv-tdep.c (frv_skip_main_prologue): Update. * gnu-v2-abi.c (gnuv2_value_rtti_type): Update. * gnu-v3-abi.c (gnuv3_rtti_type): Update. (gnuv3_get_typename_from_type_info): Update. (gnuv3_skip_trampoline): Update. * hppa-tdep.c (hppa_lookup_stub_minimal_symbol): Update. * i386-tdep.c (i386_skip_main_prologue): Update. (i386_pe_skip_trampoline_code): Update. * ia64-tdep.c (ia64_convert_from_func_ptr_addr): Update. * infcall.c (get_function_name): Update. * linespec.c (minsym_found): Update. * linux-fork.c (info_checkpoints_command): Update. * m32c-tdep.c (m32c_m16c_address_to_pointer): Update. (m32c_m16c_pointer_to_address): Update. * maint.c (maintenance_translate_address): Update. * minsyms.c (add_minsym_to_hash_table): Update. (add_minsym_to_demangled_hash_table): Update. (lookup_minimal_symbol_mangled): Update. (lookup_minimal_symbol_demangled): Update. (lookup_minimal_symbol_linkage): Update. (lookup_minimal_symbol_text): Update. (lookup_minimal_symbol_by_pc_name): Update. (minimal_symbol_is_less_than): Update. (compact_minimal_symbols): Update. (build_minimal_symbol_hash_tables): Update. (find_solib_trampoline_target): Update. * mips-tdep.c (mips_stub_frame_sniffer): Update. (mips_skip_pic_trampoline_code): Update. * msp430-tdep.c (msp430_skip_trampoline_code): Update. * objc-lang.c (info_selectors_command): Update. (info_classes_command): Update. (find_methods): Update. (find_imps): Update. * p-valprint.c (pascal_val_print): Update. * ppc-linux-tdep.c (powerpc_linux_in_dynsym_resolve_code): Update. * ppc-sysv-tdep.c (convert_code_addr_to_desc_addr): Update. * printcmd.c (build_address_symbolic): Update. (info_symbol_command): Update. * psymtab.c (psymbol_name_matches): Update. (match_partial_symbol): Update. (lookup_partial_symbol): Update. (print_partial_symbols): Update. (sort_pst_symbols): Update. (maintenance_check_psymtabs): Update. * python/py-framefilter.c (py_print_frame): Update. * python/python.c (gdbpy_rbreak): Update. * record-btrace.c (btrace_get_bfun_name): Update. (btrace_call_history): Update. * rs6000-tdep.c (rs6000_skip_main_prologue): Update. (rs6000_skip_trampoline_code): Update. * sol-thread.c (info_cb): Update. * stabsread.c (scan_file_globals): Update. * stack.c (find_frame_funname): Update. (info_frame_command_core): Update. * symmisc.c (dump_msymbols): Update. * symtab.c (symbol_natural_name): Rename to.., (general_symbol_info::natural_name): ...this. (symbol_demangled_name): Rename to... (general_symbol_info::demangled_name): ...this. (symbol_search_name): Rename to... (general_symbol_info::search_name): ...this. (symbol_matches_search_name): Update. (find_pc_sect_line): Update. (skip_prologue_sal): Update. (search_symbols): Update. (print_msymbol_info): Update. (rbreak_command): Update. (completion_list_add_msymbol): Update. (completion_list_objc_symbol): Update. (get_msymbol_address): Update. * symtab.h (struct general_symbol_info): Add member functions natural_name (), linkage_name (), print_name (), demangled_name (), and search_name (). (SYMBOL_NATURAL_NAME): Update. (symbol_natural_name): Move to a member function on general_symbol_info. (SYMBOL_DEMANGLED_NAME): Update. (symbol_demangled_name): Move to a member function on general_symbol_info. (SYMBOL_SEARCH_NAME): Update. (symbol_search_name): Move to a member function on general_symbol_info. (MSYMBOL_NATURAL_NAME): Remove. (MSYMBOL_LINKAGE_NAME): Remove. (MSYMBOL_PRINT_NAME): Remove. (MSYMBOL_DEMANGLED_NAME): Remove. (MSYMBOL_SEARCH_NAME): Remove. * x86-tdep.c (x86_in_indirect_branch_thunk): Update. Change-Id: I65aa529843a9903e174ce799037e41f954a9fcee
2019-11-22Create a correctly-sized demangled names hashtableChristian Biesinger2-2/+18
If we have a minsym count, we know the demangled names hashtable will be at least that big. So use that count to size it, so we don't have to resize/rehash it as much. This is a 6% improvement in minsym loading time. 2019-11-22 Christian Biesinger <cbiesinger@google.com> * symtab.c (create_demangled_names_hash): Use per_bfd-> minimal_symbol_count for computing the initial size, if greater than our default size. Change-Id: I1f074d38e1d90af58705ec852f90c84cc034cd2e
2019-11-22[gdb/contrib] Improve words extraction in words.sh scriptTom de Vries2-1/+6
Remove more punctuation and quoting in words.sh script. gdb/ChangeLog: 2019-11-22 Tom de Vries <tdevries@suse.de> * contrib/words.sh: Improve words extraction. Change-Id: I1d9eea165731af4e6c4e1c7e09aed9b07af6395c
2019-11-22[gdb/contrib] Combine sed invocations in words.sh scriptTom de Vries2-5/+10
Currently running words.sh on all the c source and header files in the repo takes ~16s in user time: ... $ time ./gdb/contrib/words.sh \ $(find -type f -name "*.c" -o -name "*.h") \ >/dev/null real 0m7,787s user 0m16,349s sys 0m0,367s ... Rewrite the sed invocations using the -e option from this: ... | sed <sedprog1> | sed <sedprog2> ... into this: ... | sed \ -e <sedprog1> -e <sedprog2> ... and reduce user time to ~11s: ... $ time ./gdb/contrib/words.sh \ $(find -type f -name "*.c" -o -name "*.h") \ >/dev/null real 0m7,243s user 0m11,220s sys 0m0,205s ... gdb/ChangeLog: 2019-11-22 Tom de Vries <tdevries@suse.de> * contrib/words.sh: Combine sed invocations. Change-Id: Ib08453f3712f32ed02d9f503ee960711ebb9421b