aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-02-20gdbserver: turn target ops 'fetch_registers' and 'store_registers' into methodsTankut Baris Aktemur10-40/+83
gdbserver/ChangeLog: 2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> Turn process_stratum_target's fetch_registers and store_registers ops into methods of process_target. * target.h (struct process_stratum_target): Remove the target ops. (class process_target): Add the target ops. (fetch_inferior_registers): Update the macro. (store_inferior_registers): Update the macro. Update the derived classes and callers below. * linux-low.cc (linux_target_ops): Update. (linux_fetch_registers): Turn into ... (linux_process_target::fetch_registers): ... this. (linux_store_registers): Turn into ... (linux_process_target::store_registers): ... this. * linux-low.h (class linux_process_target): Update. * lynx-low.cc (lynx_target_ops): Update. (lynx_fetch_registers): Turn into ... (lynx_process_target::fetch_registers): ... this. (lynx_store_registers): Turn into ... (lynx_process_target::store_registers): ... this. * lynx-low.h (class lynx_process_target): Update. * nto-low.cc (nto_target_ops): Update. (nto_fetch_registers): Turn into ... (nto_process_target::fetch_registers): ... this. (nto_store_registers): Turn into ... (nto_process_target::store_registers): ... this. * nto-low.h (class nto_process_target): Update. * win32-low.cc (win32_target_ops): Update. (win32_fetch_inferior_registers): Turn into ... (win32_process_target::fetch_registers): ... this. (win32_store_inferior_registers): Turn into ... (win32_process_target::store_registers): ... this. * win32-low.h (class win32_process_target): Update.
2020-02-20gdbserver: turn target op 'wait' into a methodTankut Baris Aktemur11-33/+71
gdbserver/ChangeLog: 2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> Turn process_stratum_target's wait op into a method of process_target. * target.h (struct process_stratum_target): Remove the target op. (class process_target): Add the target op. Update the derived classes and callers below. * target.cc (target_wait): Update. * linux-low.cc (linux_target_ops): Update. (linux_wait): Turn into ... (linux_process_target::wait): ... this. * linux-low.h (class linux_process_target): Update. * lynx-low.cc (lynx_target_ops): Update. (lynx_wait): Turn into ... (lynx_process_target::wait): ... this. * lynx-low.h (class lynx_process_target): Update. * nto-low.cc (nto_target_ops): Update. (nto_wait): Turn into ... (nto_process_target::wait): ... this. * nto-low.h (class nto_process_target): Update. * win32-low.cc (win32_target_ops): Update. (win32_wait): Turn into ... (win32_process_target::wait): ... this. (do_initial_child_stuff): Update. * win32-low.h (class win32_process_target): Update.
2020-02-20gdbserver: turn target op 'resume' into a methodTankut Baris Aktemur12-24/+58
gdbserver/ChangeLog: 2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> Turn process_stratum_target's resume op into a method of process_target. * target.h (struct process_stratum_target): Remove the target op. (class process_target): Add the target op. Update the derived classes and callers below. * server.cc (resume): Update. * target.cc (target_stop_and_wait): Update. (target_continue_no_signal): Update. (target_continue): Update. * linux-low.cc (linux_target_ops): Update. (linux_resume): Turn into ... (linux_process_target::resume): ... this. * linux-low.h (class linux_process_target): Update. * lynx-low.cc (lynx_target_ops): Update. (lynx_resume): Turn into ... (lynx_process_target::resume): ... this. * lynx-low.h (class lynx_process_target): Update. * nto-low.cc (nto_target_ops): Update. (nto_resume): Turn into ... (nto_process_target::resume): ... this. * nto-low.h (class nto_process_target): Update. * win32-low.cc (win32_target_ops): Update. (win32_resume): Turn into ... (win32_process_target::resume): ... this. (win32_process_target::detach): Update. (do_initial_child_stuff): Update. * win32-low.h (class win32_process_target): Update.
2020-02-20gdbserver: turn target op 'thread_alive' into a methodTankut Baris Aktemur10-21/+54
gdbserver/ChangeLog: 2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> Turn process_stratum_target's thread_alive op into a method of process_target. * target.h (struct process_stratum_target): Remove the target op. (class process_target): Add the target op. (mythread_alive): Update the macro. Update the derived classes and callers below. * linux-low.cc (linux_target_ops): Update. (linux_thread_alive): Turn into ... (linux_process_target::thread_alive): ... this. (wait_for_sigstop): Update. * linux-low.h (class linux_process_target): Update. * lynx-low.cc (lynx_target_ops): Update. (lynx_thread_alive): Turn into ... (lynx_process_target::thread_alive): ... this. * lynx-low.h (class lynx_process_target): Update. * nto-low.cc (nto_target_ops): Update. (nto_thread_alive): Turn into ... (nto_process_target::thread_alive): ... this. * nto-low.h (class nto_process_target): Update. * win32-low.cc (win32_target_ops): Update. (win32_thread_alive): Turn into ... (win32_process_target::thread_alive): ... this. * win32-low.h (class win32_process_target): Update.
2020-02-20gdbserver: turn target op 'join' into a methodTankut Baris Aktemur10-15/+51
gdbserver/ChangeLog: 2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> Turn process_stratum_target's join op into a method of process_target. * target.h (struct process_stratum_target): Remove the target op. (class process_target): Add the target op. (join_inferior): Update the macro. Update the derived classes and callers below. * linux-low.cc (linux_target_ops): Update. (linux_join): Turn into ... (linux_process_target::join): ... this. * linux-low.h (class linux_process_target): Update. * lynx-low.cc (lynx_target_ops): Update. (lynx_join): Turn into ... (lynx_process_target::join): ... this. * lynx-low.h (class lynx_process_target): Update. * nto-low.cc (nto_target_ops): Update. (nto_process_target::join): Define. * nto-low.h (class nto_process_target): Update. * win32-low.cc (win32_target_ops): Update. (win32_join): Turn into ... (win32_process_target::join): ... this. * win32-low.h (class win32_process_target): Update.
2020-02-20gdbserver: turn target op 'mourn' into a methodTankut Baris Aktemur11-23/+56
gdbserver/ChangeLog: 2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> Turn process_stratum_target's mourn op into a method of process_target. * target.h (struct process_stratum_target): Remove the target op. (class process_target): Add the target op. Update the derived classes and callers below. * target.cc (target_mourn_inferior): Update. * linux-low.cc (linux_target_ops): Update. (linux_mourn): Turn into ... (linux_process_target::mourn): ... this. (handle_extended_wait): Update. (linux_process_target::kill): Update. (linux_process_target::detach): Update. * linux-low.h (class linux_process_target): Update. * lynx-low.cc (lynx_target_ops): Update. (lynx_mourn): Turn into ... (lynx_process_target::mourn): ... this. * lynx-low.h (class lynx_process_target): Update. * nto-low.cc (nto_target_ops): Update. (nto_mourn): Turn into ... (nto_process_target::mourn): ... this. * nto-low.h (class nto_process_target): Update. * win32-low.cc (win32_target_ops): Update. (win32_mourn): Turn into ... (win32_process_target::mourn): ... this. * win32-low.h (class win32_process_target): Update.
2020-02-20gdbserver: turn target op 'detach' into a methodTankut Baris Aktemur10-18/+49
gdbserver/ChangeLog: 2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> Turn process_stratum_target's detach op into a method of process_target. * target.h (struct process_stratum_target): Remove the target op. (class process_target): Add the target op. (detach_inferior): Update the macro. Update the derived classes and callers below. * linux-low.cc (linux_target_ops): Update. (linux_detach): Turn into ... (linux_process_target::detach): ... this. * linux-low.h (class linux_process_target): Update. * lynx-low.cc (lynx_target_ops): Update. (lynx_detach): Turn into ... (lynx_process_target::detach): ... this. * lynx-low.h (class lynx_process_target): Update. * nto-low.cc (nto_target_ops): Update. (nto_detach): Turn into ... (nto_process_target::detach): ... this. * nto-low.h (class nto_process_target): Update. * win32-low.cc (win32_target_ops): Update. (win32_detach): Turn into ... (win32_process_target::detach): ... this. * win32-low.h (class win32_process_target): Update.
2020-02-20gdbserver: turn target op 'kill' into a methodTankut Baris Aktemur11-17/+48
gdbserver/ChangeLog: 2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> Turn process_stratum_target's kill op into a method of process_target. * target.h (struct process_stratum_target): Remove the target op. (class process_target): Add the target op. Update the derived classes and callers below. * target.cc (kill_inferior): Update. * linux-low.cc (linux_target_ops): Update. (linux_kill): Turn into ... (linux_process_target::kill): ... this. * linux-low.h (class linux_process_target): Update. * lynx-low.cc (lynx_target_ops): Update. (lynx_kill): Turn into ... (lynx_process_target::kill): ... this. * lynx-low.h (class lynx_process_target): Update. * nto-low.cc (nto_target_ops): Update. (nto_kill): Turn into ... (nto_process_target::kill): ... this. * nto-low.h (class nto_process_target): Update. * win32-low.cc (win32_target_ops): Update. (win32_kill): Turn into ... (win32_process_target::kill): ... this. * win32-low.h (class win32_process_target): Update.
2020-02-20gdbserver: turn target op 'attach' into a methodTankut Baris Aktemur10-23/+54
gdbserver/ChangeLog: 2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> Turn process_stratum_target's attach op into a method of process_target. * target.h (struct process_stratum_target): Remove the target op. (class process_target): Add the target op. (myattach): Update the macro. Update the derived classes and callers below. * linux-low.cc (linux_target_ops): Update. (linux_attach): Turn into ... (linux_process_target::attach): ... this. * linux-low.h (class linux_process_target): Update. * lynx-low.cc (lynx_target_ops): Update. (lynx_attach): Turn into ... (lynx_process_target::attach): ... this. * lynx-low.h (class lynx_process_target): Update. * nto-low.cc (nto_target_ops): Update. (nto_attach): Turn into ... (nto_process_target::attach): ... this. * nto-low.h (class nto_process_target): Update. * win32-low.cc (win32_target_ops): Update. (win32_attach): Turn into ... (win32_process_target::attach): ... this. * win32-low.h (class win32_process_target): Update.
2020-02-20gdbserver: turn target op 'post_create_inferior' into a methodTankut Baris Aktemur8-15/+38
gdbserver/ChangeLog: 2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> Turn process_stratum_target's post_create_inferior op into a method of process_target. * target.h (struct process_stratum_target): Remove the target op. (class process_target): Add the target op. (target_post_create_inferior): Update the macro. * target.cc (process_target::post_create_inferior): Define. Update the derived classes and callers below. * linux-low.cc (linux_target_ops): Update. (linux_post_create_inferior): Turn into ... (linux_process_target::post_create_inferior): ... this. * linux-low.h (class linux_process_target): Update. * lynx-low.cc (lynx_target_ops): Update. * nto-low.cc (nto_target_ops): Update. * win32-low.cc (win32_target_ops): Update.
2020-02-20gdbserver: turn target op 'create_inferior' into a methodTankut Baris Aktemur11-33/+69
gdbserver/ChangeLog: 2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> Turn process_stratum_target's create_inferior op into a method of process_target. * target.h (struct process_stratum_target): Remove the target op. (class process_target): Add the target op. (create_inferior): Rename the macro to ... (target_create_inferior): ... this. Update the derived classes and callers below. * server.cc (handle_v_run): Update. (captured_main): Update. (process_serial_event): Update. * linux-low.cc (linux_target_ops): Update. (linux_create_inferior): Turn into ... (linux_process_target::create_inferior): ... this. * linux-low.h (class linux_process_target): Update. * lynx-low.cc (lynx_target_ops): Update. (lynx_create_inferior): Turn into ... (lynx_process_target::create_inferior): ... this. * lynx-low.h (class lynx_process_target): Update. * nto-low.cc (nto_target_ops): Update. (nto_create_inferior): Turn into ... (nto_process_target::create_inferior): ... this. * nto-low.h (class nto_process_target): Update. * win32-low.cc (win32_target_ops): Update. (win32_create_inferior): Turn into ... (win32_process_target::create_inferior): ... this. * win32-low.h (class win32_process_target): Update.
2020-02-20gdbserver: start turning the target ops vector into a classTankut Baris Aktemur10-0/+131
This is the beginning of a series of patches where the goal is to turn the target ops vector into a class and all the target op function pointers into methods of this class. Currently, the target ops is a struct of function pointers. At the end of the series, it becomes a class with methods, and the existing low target definitions become subclasses. That is, we end up with the following class hierarchy: process_stratum_target ^ |-- linux-low |-- lynx-low |-- nto-low |-- win32-low process_stratum_target either defines the default behavior for the target ops or leaves them as pure virtual for the subclasses to override. The transformation is done by first introducing a helper class, called 'process_target', that is initially empty. An instance of this class is added to the end of the current target ops vector. This new field is called 'pt'. We will gradually carry target ops to the new class, one by one, whereas the invocation of the target op will be converted to a method call on 'pt'. For instance, target op 'attach' is currently invoked as (*the_target->attach) (args) After moving 'attach' as a method to 'process_target', it will be invoked as the_target->pt->attach (args) In this process, the concrete target vector definitions (e.g. linux-low, win32-low, nto-low, etc.) are turned into derived classes of 'process_target', so that they can either inherit the default behavior of the target ops or can override the method. We prefer to make this transition gradually rather than in a single giant patch, to yield bite-size patches. The goal is that after each patch gdbserver will still be buildable and testable. The general rule of thumb when converting a target op to a method is this: (1) If the function call is protected with a NULL-check with an obvious default behavior, simply implement that default behavior in the base class (e.g.: supports_non_stop). (2) If there is no NULL-check guard, the method becomes pure virtual, and the derived targets are required to implement the method (e.g.: attach). (3) If there is a NULL-check but no apparent default behavior, or if the NULL-check is utilized to populate a feature support packet, introduce a 'supports_XYZ' method (e.g.: pid_to_exec_file). The overall strategy is to preserve the existing behavior as much as possible. When we're done moving all the target ops into 'process_target', the target op vector will contain nothing but the field 'pt'. At that point, the auxiliary class 'process_target' will simply meld into 'process_stratum_target' and the method calls of the form 'the_target->pt->xyz' will be turned into 'the_target->xyz'. The "linux-low" target has been built and reg-tested on X86_64 Linux (Ubuntu). The "win32-low" target has been built (but not tested) via cross-compilation to a x86_64-w64-mingw32 target. The "lynx-low" and "nto-low" targets were neither built nor tested. gdbserver/ChangeLog: 2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> * target.h (class process_target): New class definition. (struct process_stratum_target) <pt>: New field with type 'process_target*'. * linux-low.h (class linux_process_target): Define as a derived class of 'process_target'. * linux-low.cc (linux_target_ops): Add a linux_process_target* as the 'pt' field. * lynx-low.h (class lynx_process_target): Define as a derived class of 'process_target'. * lynx-low.cc (lynx_target_ops): Add a lynx_process_target* as the 'pt' field. * nto-low.h (class nto_process_target): Define as a derived class of 'process_target'. * nto-low.cc (nto_target_ops): Add an nto_process_target* as the 'pt' field. * win32-low.h (class win32_process_target): Define as a derived class of 'process_target'. * win32-low.cc (win32_target_ops): Add a win32_process_target* as the 'pt' field.
2020-02-20Stop the BFD library from automatically converting OS and PROC specific ↵Nick Clifton4-1/+40
symbol section indicies to SHN_ABS, and provide a hook for backends to decide how such indicies should be processed. * elf-bfd.h (struct elf_backend_data): Add symbol_section_index callback. * elfxx-target.h (elf_backend_symbol_section_index): Provide default definition. (elfNN_bed): Initialise the symbol_section_index field. * elf.c (swap_out_syms): Call symbol_section_index, if defined, on OS and PROC specific section indicies. Warn if converting other reserved incidies to SHN_ABS.
2020-02-20gdb: Allow more control over where to find python librariesAndrew Burgess5-8/+91
The motivation behind this commit is to make it easier to bundle the Python *.py library files with GDB when statically linking GDB against libpython. The Python files will be manually added into the GDB installation tree, and GDB should be able to find them at run-time. The installation tree will look like this: . |-- bin/ |-- include/ |-- lib/ | `-- python3.8/ `-- share/ The benefit here is that the entire installation tree can be bundled into a single archive and copied to another machine with a different version of Python installed, and GDB will still work, including its Python support. In use the new configure options would be used something like this, first build and install a static Python library: mkdir python cd python # Clone or download Python into a src/ directory. mkdir build export PYTHON_INSTALL_PATH=$PWD/install cd build ../src/configure --disable-shared --prefix=$PYTHON_INSTALL_PATH make make install Now build and install GDB: mkdir binutils-gdb cd binutils-gdb # Clone or download GDB into a src/ directory. mkdir build export GDB_INSTALL_DIR=$PWD/install cd build ../src/configure \ --prefix=$GDB_INSTALL_DIR \ --with-python=$PYTHON_INSTALL_PATH/bin/python3 \ --with-python-libdir=$GDB_INSTALL_DIR/lib make all-gdb make install-gdb Finally, copy the Python libraries into the GDB install: cp -r $PYTHON_INSTALL_DIR/lib/python3.8/ $GDB_INSTALL_DIR/lib After this the Python src, build, and install directories are no longer needed and can be deleted. If the new --with-python-libdir option is not used then the existing behaviour is left unchanged, GDB will look for the Python libraries in the lib/ directory within the python path. The concatenation of the python prefix and the string 'lib/' is now done at configure time, rather than at run time in GDB as it was previous, however, this was never something that the user had dynamic control over, so there's no loss of functionality. gdb/ChangeLog: * config.in: Regenerate. * configure: Regenerate. * configure.ac: Add --with-python-libdir option. * main.c: Use WITH_PYTHON_LIBDIR.
2020-02-20[gdb/testsuite] Handle missing gccgoTom de Vries12-1/+46
Without gccgo installed I see in stdout/stderr: ... Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/print.exp ... Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/handcall.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/max-depth.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/integers.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/unsafe.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/package.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/types.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/chan.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/strings.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/basic-types.exp ... Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/hello.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/methods.exp ... gdb compile failed, default_target_compile: Can't find gccgo. ... Fix this by introducing a gdb_caching_proc support_go_compile, and using it in the complaining test-cases. Tested on x86_64-linux, with and without gccgo installed. gdb/testsuite/ChangeLog: 2020-02-20 Tom de Vries <tdevries@suse.de> * lib/gdb.exp (support_go_compile): New gdb_caching_proc. (gdb_simple_compile): Handle compile_flags go by using .go extension for source file. * gdb.go/chan.exp: Use support_go_compile. * gdb.go/handcall.exp: Same. * gdb.go/hello.exp: Same. * gdb.go/integers.exp: Same. * gdb.go/max-depth.exp: Same. * gdb.go/methods.exp: Same. * gdb.go/package.exp: Same. * gdb.go/strings.exp: Same. * gdb.go/types.exp: Same. * gdb.go/unsafe.exp: Same.
2020-02-20Regen with blessed automake-1.15.1Alan Modra2-2/+6
This doesn't change anything except comments. * aclocal.m4: Regenerate.
2020-02-19RISC-V: Add description for -march-attr/-mno-arch-attr options in gas doc.Nelson Chu2-0/+19
gas/ * doc/c-riscv.texi: Add the doc entries for -march-attr/ -mno-arch-attr command line options.
2020-02-19Two compute_and_set_names simplificationsTom Tromey2-13/+10
This patch simplifies compute_and_set_names in a couple of ways. First, it changes one spot to use obstack_strndup, which is equivalent, but more concise. Second, the function ends with two calls to symbol_set_demangled_name. This can be simplified to a single call. gdb/ChangeLog 2020-02-19 Tom Tromey <tom@tromey.com> * symtab.c (general_symbol_info::compute_and_set_names): Use obstack_strndup. Simplify call to symbol_set_demangled_name.
2020-02-20Automatic date update in version.inGDB Administrator1-1/+1
2020-02-19RISC-V: Convert the ADD/ADDI to the compressed MV/LI if RS1 is zero.Jim Wilson5-0/+26
2020-02-19 Nelson Chu <nelson.chu@sifive.com> gas/ * testsuite/gas/riscv/c-add-addi.d: New testcase. * testsuite/gas/riscv/c-add-addi.s: Likewise. opcodes/ * riscv-opc.c (riscv_opcodes): Convert add/addi to the compressed c.mv/c.li if rs1 is zero. Change-Id: Id939b5e6db80d267a832545f3ffef7b9ba881f7d
2020-02-192020-02-19 Jordan Rupprecht <rupprecht@google.com>Eric Christopher2-1/+19
* objdump.c (show_line): call bfd_demangle when using do_demangle.
2020-02-19[gdb/testsuite] Fix xpass in gdb.python/lib-types.expTom de Vries2-2/+13
When running gdb.python/lib-types.exp, we have an xpass: ... (gdb) python print (str (typedef_const_typedef_class1_ref_obj.type))^M typedef_const_typedef_class1_ref^M (gdb) XPASS: gdb.python/lib-types.exp: \ python print (str (typedef_const_typedef_class1_ref_obj.type)) \ (PRMS gcc/55641) ... When running the same with gcc 4.8, we have an xfail instead: ... (gdb) python print (str (typedef_const_typedef_class1_ref_obj.type))^M const typedef_const_typedef_class1_ref^M (gdb) XFAIL: gdb.python/lib-types.exp: \ python print (str (typedef_const_typedef_class1_ref_obj.type)) \ (PRMS gcc/55641) ... Fix the xpass by xfailing only for the gcc 4.8 pattern. Tested on x86_64-linux, with: - gcc 7.5.0 - gcc 4.8.5 - clang 5.0.2 gdb/testsuite/ChangeLog: 2020-02-19 Tom de Vries <tdevries@suse.de> * gdb.python/lib-types.exp: Make xfail more strict.
2020-02-19[gdb/testsuite] Fix funcall_ref.exp xpassTom de Vries2-9/+28
When running gdb.ada/funcall_ref.exp I run into two XPASSes: ... (gdb) p get ("Hello world!")^M $1 = (n => 12, s => "Hello world!")^M (gdb) XPASS: gdb.ada/funcall_ref.exp: p get ("Hello world!") ptype get ("Hello world!")^M type = <ref> record^M n: natural;^M s: access array (1 .. n) of character;^M end record^M (gdb) XPASS: gdb.ada/funcall_ref.exp: ptype get ("Hello world!") ... The xfails are documented in funcall_ref.exp: ... # Currently, GCC describes such functions as returning pointers (instead of # references). setup_xfail *-*-* ... Using gnatmake 4.8, we can reproduce the XFAILs: ... (gdb) p get ("Hello world!")^M $1 = (access foo.bar) 0x6147b0 <system.secondary_stack.chunk+48>^M (gdb) XFAIL: gdb.ada/funcall_ref.exp: p get ("Hello world!") ptype get ("Hello world!")^M type = access record^M n: natural;^M s: access array (1 .. n) of character;^M end record^M (gdb) XFAIL: gdb.ada/funcall_ref.exp: ptype get ("Hello world!") ... Fix the XPASSes by: - removing the xfail setup - switching the order of the two tests - detecting the "access record" type and declaring the first test unsupported, and skipping the second test Tested on x86_64-linux, both with gnatmake 4.8.5 and gnatmake 7.5.0. gdb/testsuite/ChangeLog: 2020-02-19 Tom de Vries <tdevries@suse.de> * gdb.ada/funcall_ref.exp: Replace xfail setup by unsupported check.
2020-02-19gdb: dwarf2/read.c: remove unused objfile parameters/variablesSimon Marchi2-34/+26
This is a simple cleanup. These functions used to use the objfile's obstack for allocation in the hash tables, but they don't anymore. Remove the unnecessary objfile parameters, which in turn allows removing some local variables. gdb/ChangeLog: * dwarf2/read.c (allocate_signatured_type_table, allocate_dwo_unit_table, allocate_type_unit_groups_table, allocate_dwo_file_hash_table, allocate_dwp_loaded_cutus_table): Remove objfile parameter, update all callers.
2020-02-19rust/25535 Apply embedded offset to enum variant calculationDoug Evans5-1/+24
Hopefully straightforward (and I didn't miss anything ...). gdb/ChangeLog 2020-02-19 Doug Evans <dje@google.com> PR rust/25535 * rust-lang.c (rust_print_enum): Apply embedded_offset to rust_enum_variant calculation. gdb/testsuite/ChangeLog 2020-02-19 Doug Evans <dje@google.com> PR rust/25535 * gdb.rust/simple.exp: Add test. * gdb.rust/simple.rs: Add test.
2020-02-19[gdb/testsuite] Fix corefile-buildid.exp with check-read1Tom de Vries2-1/+53
When running gdb.base/corefile-buildid.exp using check-read1, I run into: ... FAIL: gdb.base/corefile-buildid.exp: shared: info files (timeout) FAIL: gdb.base/corefile-buildid.exp: symlink shared: info files (timeout) FAIL: gdb.base/corefile-buildid.exp: shared sepdebug: info files (timeout) FAIL: gdb.base/corefile-buildid.exp: symlink shared sepdebug: info files \ (timeout) ... This is caused by attempting to match the output of an "info files" command using a single gdb_test in check_exec_file. Fix this by doing line-by-line matching in check_exec_file. Tested on x86_64-linux, using make targets check and check-read1. gdb/testsuite/ChangeLog: 2020-02-19 Tom de Vries <tdevries@suse.de> * gdb.base/corefile-buildid.exp (check_exec_file): Match info files output line-by-line.
2020-02-19Fix declaration of mips_pc_is_mipsTom Tromey2-1/+5
A build where CORE_ADDR is not the same as bfd_vma pointed out that mips_pc_is_mips is declared using bfd_vma as the parameter type, but defined using CORE_ADDR. This patch fixes the declaration. gdb/ChangeLog 2020-02-19 Tom Tromey <tromey@adacore.com> * mips-tdep.h (mips_pc_is_mips): Parameter type is CORE_ADDR.
2020-02-19Use obstack_strdup in ada-lang.cTom Tromey2-4/+5
I happened across a spot that was still using obstack_alloc and strcpy, rather than obstack_strdup. This patch makes the obvious fix. gdb/ChangeLog 2020-02-19 Tom Tromey <tromey@adacore.com> * ada-lang.c (cache_symbol): Use obstack_strdup.
2020-02-19Merge changes from GCC for the config/ directoryAndrew Burgess26-87/+504
GCC's config/ChangeLog since the last time this merge was done (in the binutils-gdb commit 0b4d000cc4e8e77c823) is included at the end of this commit message. It is worth noting that the binutils-gdb commit 301a9420d947da1458 added the file config/debuginfod.m4 which is not present in GCC's config/ directory. This file is preserved, unmodified, after this commit. In order to regenerate all of the configure files, I configured with --enable-maintainer-mode, and built the 'all' target. I then did the same thing on a source tree without this patch, and only committed those files that changed when this patch was added. GCC's config/ChangeLog entries: 2020-02-12 Sandra Loosemore <sandra@codesourcery.com> PR libstdc++/79193 PR libstdc++/88999 * no-executables.m4: Use a non-empty program to test for linker support. 2020-02-01 Andrew Burgess <andrew.burgess@embecosm.com> * lib-link.m4 (AC_LIB_LINKFLAGS_BODY): Update shell syntax. 2020-01-27 Andrew Burgess <andrew.burgess@embecosm.com> * lib-link.m4 (AC_LIB_LINKFLAGS_BODY): Add new --with-libXXX-type=... option. Use this to guide the selection of either a shared library or a static library. 2020-01-24 Maciej W. Rozycki <macro@wdc.com> * toolexeclibdir.m4: New file. 2019-09-10 Christophe Lyon <christophe.lyon@st.com> * futex.m4: Handle *-uclinux*. * tls.m4 (GCC_CHECK_TLS): Likewise. 2019-09-06 Florian Weimer <fweimer@redhat.com> * futex.m4 (GCC_LINUX_FUTEX): Include <unistd.h> for the syscall function. 2019-07-08 Richard Sandiford <richard.sandiford@arm.com> * bootstrap-Og.mk: New file. 2019-06-25 Kwok Cheung Yeung <kcy@codesourcery.com> Andrew Stubbs <ams@codesourcery.com> * gthr.m4 (GCC_AC_THREAD_HEADER): Add case for gcn. 2019-05-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * ax_count_cpus.m4: New file. 2019-05-02 Richard Biener <rguenther@suse.de> PR bootstrap/85574 * bootstrap-lto.mk (extra-compare): Set to gcc/lto1$(exeext). 2019-04-16 Martin Liska <mliska@suse.cz> * bootstrap-lto-lean.mk: Filter out -flto in STAGEtrain_CFLAGS. 2019-04-09 Martin Liska <mliska@suse.cz> * bootstrap-lto-lean.mk: New file. 2019-03-02 Johannes Pfau <johannespfau@gmail.com> * mh-mingw: Also set __USE_MINGW_ACCESS flag for C++ code. 2018-10-31 Joseph Myers <joseph@codesourcery.com> PR bootstrap/82856 * math.m4, tls.m4: Use AC_LANG_SOURCE. Merge from binutils-gdb: 2018-06-19 Simon Marchi <simon.marchi@ericsson.com> * override.m4 (_GCC_AUTOCONF_VERSION): Bump from 2.64 to 2.69. config/ChangeLog: * ax_count_cpus.m4: New file, backported from GCC. * bootstrap-Og.mk: New file, backported from GCC. * bootstrap-lto-lean.mk: New file, backported from GCC. * bootstrap-lto.mk: Changes backported from GCC. * futex.m4: Changes backported from GCC. * gthr.m4: Changes backported from GCC. * lib-link.m4: Changes backported from GCC. * mh-mingw: Changes backported from GCC. * no-executables.m4: Changes backported from GCC. * tls.m4: Changes backported from GCC. * toolexeclibdir.m4: New file, backported from GCC. binutils/ChangeLog: * configure: Regenerate. gdb/ChangeLog: * configure: Regenerate. gdbserver/ChangeLog: * configure: Regenerate. gdbsupport/ChangeLog: * configure: Regenerate. intl/ChangeLog: * configure: Regenerate. libiberty/ChangeLog: * configure: Regenerate. zlib/ChangeLog.bin-gdb: * configure: Regenerate.
2020-02-19Various fixes for the Z80 support.Sergey Belyashov44-370/+354
PR 25537 ld * emultempl/z80.em: Remove machine compatability checking. PR 25517 * testsuite/ld-z80/arch_ez80_adl.d: Update command line. * testsuite/ld-z80/arch_ez80_z80.d: Likewise. * testsuite/ld-z80/arch_r800.d: Likewise. * testsuite/ld-z80/arch_z180.d: Likewise. * testsuite/ld-z80/arch_z80n.d: Likewise. * testsuite/ld-z80/comb_arch_ez80_z80.d: Likewise. * testsuite/ld-z80/comb_arch_z180_z80.d: Likewise. * testsuite/ld-z80/comb_arch_z80_ez80.d: Likewise. * testsuite/ld-z80/comb_arch_z80_z180.d: Likewise. * testsuite/ld-z80/comb_arch_z80_z80n.d: Likewise. * testsuite/ld-z80/relocs_b_ez80.d: Likewise. * testsuite/ld-z80/relocs_b_z80.d: Likewise. * testsuite/ld-z80/relocs_f_ez80.d: Likewise. * testsuite/ld-z80/relocs_f_z80.d: Likewise. * testsuite/ld-z80/relocs_f_z80n.d: Likewise. bfd * cpu-z80.c: Add machine type compatibility checking. gas * config/tc-z80.c (md_parse_option): Do not use an underscore prefix for local labels in SDCC compatability mode. (z80_start_line_hook): Remove SDCC dollar label support. * testsuite/gas/z80/sdcc.d: Update expected disassembly. * testsuite/gas/z80/sdcc.s: Likewise. * config/tc-z80.c: Add -march option. * doc/as.texi: Update Z80 documentation. * doc/c-z80.texi: Likewise. * testsuite/gas/z80/ez80_adl_all.d: Update command line. * testsuite/gas/z80/ez80_adl_suf.d: Likewise. * testsuite/gas/z80/ez80_pref_dis.d: Likewise. * testsuite/gas/z80/ez80_z80_all.d: Likewise. * testsuite/gas/z80/ez80_z80_suf.d: Likewise. * testsuite/gas/z80/gbz80_all.d: Likewise. * testsuite/gas/z80/r800_extra.d: Likewise. * testsuite/gas/z80/r800_ii8.d: Likewise. * testsuite/gas/z80/r800_z80_doc.d: Likewise. * testsuite/gas/z80/sdcc.d: Likewise. * testsuite/gas/z80/z180.d: Likewise. * testsuite/gas/z80/z180_z80_doc.d: Likewise. * testsuite/gas/z80/z80_doc.d: Likewise. * testsuite/gas/z80/z80_ii8.d: Likewise. * testsuite/gas/z80/z80_in_f_c.d: Likewise. * testsuite/gas/z80/z80_op_ii_ld.d: Likewise. * testsuite/gas/z80/z80_out_c_0.d: Likewise. * testsuite/gas/z80/z80_sli.d: Likewise. * testsuite/gas/z80/z80n_all.d: Likewise. * testsuite/gas/z80/z80n_reloc.d: Likewise.
2020-02-19Remove useless NULL check in python.cTom Tromey2-6/+6
I noticed that do_start_initialization, in python.c, checks the result of xmalloc. However, xmalloc cannot fail, so this check is useless. This patch also changes the code to use XNEWVEC. gdb/ChangeLog 2020-02-19 Tom Tromey <tromey@adacore.com> * python/python.c (do_start_initialization): Use XNEWVEC. Remove NULL check.
2020-02-19x86: Mark cvtpi2ps and cvtpi2pd as MMXH.J. Lu6-1/+36
* config/tc-i386.c (output_insn): Mark cvtpi2ps and cvtpi2pd with GNU_PROPERTY_X86_FEATURE_2_MMX. * testsuite/gas/i386/i386.exp: Run property-3 and x86-64-property-3. * testsuite/gas/i386/property-3.d: New file. * testsuite/gas/i386/property-3.s: Likewise. * testsuite/gas/i386/x86-64-property-3.d: Likewise.
2020-02-19[gdb/testsuite] Fix c++/14186 kpass in cpexprs.expTom de Vries2-3/+4
With gdb.cp/cpexprs.exp, we see: ... KPASS: gdb.cp/cpexprs.exp: p CV::m(int) const (PRMS c++/14186) KPASS: gdb.cp/cpexprs.exp: p CV::m(int) volatile (PRMS c++/14186) KPASS: gdb.cp/cpexprs.exp: p CV::m(int) const volatile (PRMS c++/14186) ... The tests have been KPASSing since Sept 4 2017, due to commit 3693fdb3c8 'Make "p S::method() const::static_var" work too'. Fix this by removing the corresponding kfail. gdb/testsuite/ChangeLog: 2020-02-19 Tom de Vries <tdevries@suse.de> * gdb.cp/cpexprs.exp: Remove c++/14186 kfail.
2020-02-19plugin: Call dlclose before return in try_load_pluginH.J. Lu2-21/+24
Since plugin can be used only once in try_load_plugin, call dlclose before return. PR binutils/25355 * plugin.c (plugin_list_entry): Remove handle. (try_load_plugin): Call dlclose before return.
2020-02-19[gdb/testsuite] Be quiet about missing prelink in solib-overlap.expTom de Vries2-2/+8
When running gdb.base/solib-overlap.exp, I get: ... Running src/gdb/testsuite/gdb.base/solib-overlap.exp ... sh: prelink: command not found === gdb Summary === nr of untested testcases 1 ... The verbose output on stdout/stderr is due to using system to execute prelink, which also means that the output is not captured in gdb.log and gdb.sum. Fix this by using exec instead of system. Tested on x86_64-linux, with: - no prelink installed, and - a fake prelink installed, using "cp /usr/bin/echo ~/bin/prelink". gdb/testsuite/ChangeLog: 2020-02-19 Tom de Vries <tdevries@suse.de> * gdb.base/solib-overlap.exp: Use exec instead of system to execute prelink.
2020-02-19[gdb/testsuite] Ignore pass in gdb_caching_procTom de Vries3-3/+38
Before commit d4295de4f3 "[gdb/testsuite] Handle missing gnatmake in gnat_runtime_has_debug_info", calling the gdb_caching_proc gnat_runtime_has_debug_info could generate a pass because of using gdb_compile_ada. This has been fixed in that commit by using a factored out variant gdb_compile_ada_1, which does not call pass. Additionally, fix cases like this in more generic way: by ignoring pass calls during execution of a gdb_caching_proc. Build and reg-tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-02-19 Tom de Vries <tdevries@suse.de> * lib/cache.exp (ignore_pass, gdb_do_cache_wrap): New proc. (gdb_do_cache): Use gdb_do_cache_wrap. * gdb.base/gdb-caching-proc.exp (test_proc): Use gdb_do_cache_wrap.
2020-02-19file size check in _bfd_alloc_and_readAlan Modra5-25/+67
* coffgen.c (_bfd_coff_get_external_symbols): Remove file size check. * elf.c (bfd_elf_get_str_section): Likewise. (_bfd_elf_slurp_version_tables): Likewise. * libbfd-in.h (_bfd_constant_p): Define. (_bfd_alloc_and_read, _bfd_malloc_and_read): Check read size against file size before allocating memory. * libbfd.h: Regenerate.
2020-02-19_bfd_alloc_and_readAlan Modra33-441/+314
This patch provides two new inline functions that are then used in places that allocate memory, read from file, and then deallocate on a read failure. * libbfd-in.h (_bfd_alloc_and_read, _bfd_malloc_and_read): New. * aoutx.h (aout_get_external_symbols): Replace calls to bfd_[m]alloc and bfd_bread with call to _bfd_[m]alloc_and_read. (slurp_reloc_table): Likewise. * archive.c (do_slurp_bsd_armap): Likewise. (do_slurp_coff_armap): Likewise. * archive64.c (_bfd_archive_64_bit_slurp_armap): Likewise. * coff-rs6000.c (_bfd_xcoff_slurp_armap): Likewise. * coff64-rs6000.c (xcoff64_slurp_armap): Likewise. * coffcode.h (coff_set_arch_mach_hook, buy_and_read): Likewise. * coffgen.c (coff_real_object_p, coff_object_p, build_debug_section), (_bfd_coff_get_external_symbols): Likewise. * ecoff.c (ecoff_slurp_symbolic_header), (_bfd_ecoff_slurp_symbolic_info, ecoff_slurp_reloc_table), (_bfd_ecoff_slurp_armap, ecoff_link_add_object_symbols, READ), (ecoff_indirect_link_order): Likewise. * elf.c (bfd_elf_get_str_section, setup_group, elf_read_notes), (_bfd_elf_slurp_version_tables): Likewise. * elf32-m32c.c (m32c_elf_relax_section): Likewise. * elf32-rl78.c (rl78_elf_relax_section): Likewise. * elf32-rx.c (elf32_rx_relax_section): Likewise. * elf64-alpha.c (READ): Likewise. * elf64-mips.c (mips_elf64_slurp_one_reloc_table): Likewise. * elf64-sparc.c (elf64_sparc_slurp_one_reloc_table): Likewise. * elfcode.h (elf_slurp_symbol_table), (elf_slurp_reloc_table_from_section): Likewise. * elflink.c (elf_link_add_object_symbols), (elf_link_check_versioned_symbol): Likewise. * elfxx-mips.c (READ): Likewise. * i386lynx.c (slurp_reloc_table): Likewise. * lynx-core.c (lynx_core_file_p): Likewise. * mach-o.c (bfd_mach_o_canonicalize_relocs), (bfd_mach_o_read_symtab_strtab, bfd_mach_o_alloc_and_read), (bfd_mach_o_read_prebound_dylib, bfd_mach_o_read_dyld_content * pdp11.c (aout_get_external_symbols, slurp_reloc_table * pef.c (bfd_pef_print_loader_section, bfd_pef_scan_start_address), (bfd_pef_parse_symbols): Likewise. * peicode.h (pe_ILF_object_p, pe_bfd_object_p * som.c (setup_sections, som_slurp_string_table), (som_slurp_reloc_table, som_bfd_count_ar_symbols), (som_bfd_fill_in_ar_symbols): Likewise. * vms-alpha.c (module_find_nearest_line, evax_bfd_print_dst), (evax_bfd_print_image): Likewise. * vms-lib.c (_bfd_vms_lib_archive_p): Likewise. * wasm-module.c (wasm_scan): Likewise. * xcofflink.c (xcoff_link_add_symbols): Likewise. * xsym.c (bfd_sym_read_name_table), (bfd_sym_print_type_information_table_entry): Likewise. * libbfd.h: Regenerate.
2020-02-19Miscellaneous memory alloc related fixesAlan Modra11-92/+98
Some minor tidies. Allocating memory for internal relocs and symbols after reading external relocs is slightly better with fuzzed files. You can at least do something about silly sizes that way. * aoutx.h (slurp_reloc_table): Allocate reloc_cache after reading external relocs. * ecoff.c (ecoff_slurp_reloc_table): Likewise. * archive.c (_bfd_write_archive_contents): Don't twiddle bfd_error after bfd_bread. * archive64.c (_bfd_archive_64_bit_slurp_armap): Remove unnecessary bfd_release. * elf32-m32c.c (m32c_offset_for_reloc): Make shndx_buf a bfd_byte*. (m32c_elf_relax_section): Likewise. * elf32-rl78.c (rl78_offset_for_reloc): Likewise. (rl78_elf_relax_section): Likewise. * elf32-rx.c (rx_offset_for_reloc): Likewise. (elf32_rx_relax_section): Likewise. * mach-o.c (bfd_mach_o_alloc_and_read): Move earlier with better parameter types and use.. (bfd_mach_o_read_dylinker, bfd_mach_o_read_dylib), (bfd_mach_o_read_fvmlib, bfd_mach_o_read_str): ..in these functions. * peicode.h (pe_bfd_object_p): Don't zero the part of opthdr being read from file, just the extra. * som.c (som_slurp_symbol_table): Allocate internal symbol buffer after reading external syms. Free on failure.
2020-02-19_bfd_mul_overflowAlan Modra21-353/+541
This patch removes the bfd_alloc2 series of memory allocation functions, replacing them with __builtin_mul_overflow followed by bfd_alloc. Why do that? Well, a followup patch will implement _bfd_alloc_and_read and I don't want to implement alloc2 variants as well. * coffcode.h (buy_and_read, coff_slurp_line_table), (coff_slurp_symbol_table, coff_slurp_reloc_table): Replace bfd_[z][m]alloc2 calls with _bfd_mul_overflow followed by the corresponding bfd_alloc call. Adjust variables to suit. * coffgen.c (_bfd_coff_get_external_symbols): Likewise. * ecoff.c (_bfd_ecoff_slurp_symbolic_info), (_bfd_ecoff_slurp_symbol_table, READ): Likewise. * elf.c (bfd_elf_get_elf_syms, setup_group, bfd_section_from_shdr), (swap_out_syms, _bfd_elf_slurp_version_tables): Likewise. * elf32-m32c.c (m32c_elf_relax_section): Likewise. * elf32-rl78.c (rl78_elf_relax_section): Likewise. * elf32-rx.c (elf32_rx_relax_section): Likewise. * elf64-alpha.c (READ): Likewise. * elfcode.h (elf_object_p, elf_write_relocs, elf_write_shdrs_and_ehdr), (elf_slurp_symbol_table, elf_slurp_reloc_table), (bfd_from_remote_memory): Likewise. * elfcore.h (core_find_build_id): Likewise. * elfxx-mips.c (READ): Likewise. * mach-o.c (bfd_mach_o_mangle_sections), (bfd_mach_o_read_symtab_symbols, bfd_mach_o_read_thread), (bfd_mach_o_read_dysymtab, bfd_mach_o_flatten_sections), (bfd_mach_o_scan, bfd_mach_o_fat_archive_p): Likewise. * som.c (setup_sections, som_prep_for_fixups) (som_build_and_write_symbol_table, som_slurp_symbol_table), (som_slurp_reloc_table, som_bfd_count_ar_symbols), (som_bfd_fill_in_ar_symbols, som_slurp_armap), (som_bfd_ar_write_symbol_stuff): Likewise. * vms-alpha.c (vector_grow1): Likewise. * vms-lib.c (vms_add_index): Likewise. * wasm-module.c (wasm_scan_name_function_section): Likewise. * libbfd.c (bfd_malloc2, bfd_realloc2, bfd_zmalloc2): Delete. * opncls.c (bfd_alloc2, bfd_zalloc2): Delete. * libbfd-in.h (bfd_malloc2, bfd_realloc2, bfd_zmalloc2), (bfd_alloc2, bfd_zalloc2): Delete. (_bfd_mul_overflow): Define. * libbfd.h: Regenerate.
2020-02-19alloc2 used unnecessarilyAlan Modra3-22/+39
The bfd_alloc2 series of functions were invented to handle cases where nmemb * size can overflow. This patch changes some places where the calculation can't overflow. * elf.c (bfd_section_from_shdr): Use bfd_zalloc rather than bfd_zalloc2. (assign_section_numbers): Likewise. (elf_map_symbols): Likewise, and bfd_alloc rather than bfd_alloc2. (_bfd_elf_map_sections_to_segments): Use bfd_malloc rather than bfd_malloc2, size_t amt, and unsigned tls_count. (rewrite_elf_program_header): Use bfd_malloc and size_t amt. * elflink.c (elf_create_symbuf): Use bfd_malloc. (elf_output_implib): Use bfd_alloc.
2020-02-19bfd_get_size cacheAlan Modra5-20/+59
We have calls to bfd_get_size when swapping in ELF section headers. Since object files can have a large number of sections, it's worth caching the file size rather than making lots of stat system calls. * bfd.c (struct bfd): Move format and direction to other bitfields. Add "size". * bfdio.c (bfd_get_size): Cache size when not writing file. * opncls.c (bfd_get_debug_link_info_1): Allow for bfd_get_size returning zero, ie. unknown. (bfd_get_alt_debug_link_info): Likewise. * bfd-in2.h: Regenerate.
2020-02-19bfd_get_file_size callsAlan Modra4-13/+38
bfd_get_file_size can return 0, meaning the file size is unknown. * coffgen.c (_bfd_coff_get_external_symbols): Don't call bfd_get_file_size twice. (_bfd_coff_read_string_table): Allow for bfd_get_file_size zero, ie. unknown, return. * elf-attrs.c (_bfd_elf_parse_attributes): Likewise. * elfcode.h (elf_swap_shdr_in): Likewise. (elf_object_p): Don't call bfd_get_file_size twice and correct file size check.
2020-02-19Check return status of memory alloc functionsAlan Modra5-54/+112
This fixes a number of places that call a memory allocation function without checking for a NULL return before using. * mach-o.c (bfd_mach_o_flatten_sections): Return a bfd_boolean, FALSE if memory alloc fails. Adjust calls. * som.c (som_prep_for_fixups): Likewise. * vms-alpha.c (alpha_vms_add_fixup_lp, alpha_vms_add_fixup_ca), (alpha_vms_add_fixup_qr, alpha_vms_add_fixup_lr), (alpha_vms_add_lw_reloc, alpha_vms_add_qw_reloc): Likewise. * som.c (som_build_and_write_symbol_table): Return via error_return on seek failure. * vms-alpha.c (VEC_APPEND): Adjust for vector_grow1 changes. (VEC_APPEND_EL): Delete. (vector_grow1): Return pointer to element. Catch overflow. Return NULL on memory allocation failure. (alpha_vms_add_fixup_lp): Replace VEC_APPEND_EL with VEC_APPEND. (alpha_vms_add_fixup_ca): Likewise. (alpha_vms_link_add_object_symbols): Check VEC_APPEND result before using. * elf.c (bfd_section_from_shdr): Check bfd_zalloc2 result.
2020-02-19bfd_size_type to size_tAlan Modra93-260/+420
bfd_size_type was invented a long time ago in the K&R days. Many places in binutils ought to be using size_t instead (and there are lots of places that use long or unsigned long that really ought to use size_t too). Note that you can't change everything over to size_t: A 32-bit host needs a larger type than size_t to support reading and processing of 64-bit ELF object files. This patch just tidies some of the more obvious uses of bfd_size_type that could be size_t. There no doubt are more lurking in the source. Incidentally, practically all functions used for output of object files can use size_t and don't need to worry about overflow of size expressions. If you have something like symcount * sizeof (void *) when symcount is counting symbols already in memory then you know that this expression can't overflow since the size of a symbol in memory is larger by far than that of a pointer. * aix386-core.c (aix386_core_file_p): Use size_t for "amt". * aout-target.h (object_p): Likewise. * aout-tic30.c (tic30_aout_object_p): Likewise. * aoutx.h (some_aout_object_p, mkobject, make_empty_symbol), (emit_stringtab, write_syms, link_hash_table_create), (aout_link_write_other_symbol): Likewise. * archive.c (_bfd_generic_mkarchive, bfd_generic_archive_p), (bfd_ar_hdr_from_filesystem, _bfd_write_archive_contents), (_bfd_compute_and_write_armap): Likewise. * archures.c (bfd_arch_list): Likewise. * bfd.c (bfd_record_phdr): Likewise. * binary.c (binary_canonicalize_symtab): Likewise. * cisco-core.c (cisco_core_file_validate): Likewise. * coff-arm.c (coff_arm_link_hash_table_create, find_thumb_glue), (find_arm_glue, record_arm_to_thumb_glue), (record_thumb_to_arm_glue): Likewise. * coff-ppc.c (ppc_coff_link_hash_table_create, record_toc), (ppc_allocate_toc_section): Likewise. * coff-rs6000.c (_bfd_xcoff_mkobject, _bfd_xcoff_archive_p): Likewise. * coff-sh.c (sh_relax_section): Likewise. * coff64-rs6000.c (xcoff64_archive_p): Likewise. * coffcode.h (handle_COMDAT, coff_new_section_hook), (coff_set_alignment_hook, coff_mkobject), (coff_compute_section_file_positions): Likewise. * coffgen.c (coff_make_empty_symbol, coff_bfd_make_debug_symbol), (coff_find_nearest_line_with_names), ( bfd_coff_set_symbol_class): Likewise. * cofflink.c (_bfd_coff_link_hash_table_create), (_bfd_coff_link_input_bfd): Likewise. * dwarf1.c (alloc_dwarf1_unit, alloc_dwarf1_func): Likewise. * dwarf2.c (read_abbrevs, read_attribute_value, add_line_info), (build_line_info_table, sort_line_sequences), (line_info_add_include_dir, line_info_add_file_name), (decode_line_info, scan_unit_for_symbols, parse_comp_unit), (place_sections, _bfd_dwarf2_slurp_debug_info): Likewise. * ecoff.c (_bfd_ecoff_mkobject, _bfd_ecoff_make_empty_symbol), (_bfd_ecoff_find_nearest_line), (_bfd_ecoff_bfd_link_hash_table_create): Likewise. * ecofflink.c (bfd_ecoff_debug_init): Likewise. * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Likewise. * elf-m10300.c (mn10300_elf_relax_section), (elf32_mn10300_link_hash_table_create): Likewise. * elf-strtab.c (_bfd_elf_strtab_init): Likewise. * elf.c (make_mapping, copy_elf_program_header): Likewise. * elf32-arm.c (elf32_arm_link_hash_table_create), (elf32_arm_setup_section_lists, elf32_arm_check_relocs), (elf32_arm_new_section_hook): Likewise. * elf32-avr.c (elf_avr_new_section_hook), (elf32_avr_link_hash_table_create, get_local_syms), (elf32_avr_setup_section_lists): Likewise. * elf32-bfin.c (bfinfdpic_elf_link_hash_table_create), (bfin_link_hash_table_create): Likewise. * elf32-cr16.c (elf32_cr16_link_hash_table_create): Likewise. * elf32-cris.c (elf_cris_link_hash_table_create): Likewise. * elf32-csky.c (csky_elf_link_hash_table_create), (csky_elf_check_relocs, elf32_csky_setup_section_lists): Likewise. * elf32-frv.c (frvfdpic_elf_link_hash_table_create): Likewise. * elf32-hppa.c (elf32_hppa_link_hash_table_create), (elf32_hppa_setup_section_lists, get_local_syms): Likewise. * elf32-i386.c (elf_i386_check_relocs): Likewise. * elf32-lm32.c (lm32_elf_link_hash_table_create): Likewise. * elf32-m32r.c (m32r_elf_link_hash_table_create), (m32r_elf_check_relocs): Likewise. * elf32-m68hc1x.c (m68hc11_elf_hash_table_create), (elf32_m68hc11_setup_section_lists), (elf32_m68hc11_size_stubs): Likewise. * elf32-m68k.c (elf_m68k_link_hash_table_create): Likewise. * elf32-metag.c (elf_metag_link_hash_table_create), (elf_metag_setup_section_lists): Likewise. * elf32-microblaze.c (microblaze_elf_link_hash_table_create), (microblaze_elf_check_relocs): Likewise. * elf32-nds32.c (nds32_elf_link_hash_table_create), (nds32_elf_check_relocs): Likewise. * elf32-nios2.c (nios2_elf32_setup_section_lists), (get_local_syms, nios2_elf32_check_relocs), (nios2_elf32_link_hash_table_create): Likewise. * elf32-or1k.c (or1k_elf_link_hash_table_create), (or1k_elf_check_relocs): Likewise. * elf32-ppc.c (ppc_elf_modify_segment_map, update_plt_info): Likewise. * elf32-pru.c (pru_elf32_link_hash_table_create): Likewise. * elf32-s390.c (elf_s390_link_hash_table_create), (elf_s390_check_relocs): Likewise. * elf32-score.c (score_elf_create_got_section), (s3_elf32_score_new_section_hook), (elf32_score_link_hash_table_create): Likewise. * elf32-score7.c (score_elf_create_got_section), (s7_elf32_score_new_section_hook): Likewise. * elf32-sh.c (sh_elf_link_hash_table_create), (sh_elf_check_relocs): Likewise. * elf32-tic6x.c (elf32_tic6x_link_hash_table_create), (elf32_tic6x_new_section_hook, elf32_tic6x_check_relocs): Likewise. * elf32-tilepro.c (tilepro_elf_link_hash_table_create), (tilepro_elf_check_relocs): Likewise. * elf32-v850.c (remember_hi16s_reloc): Likewise. * elf32-vax.c (elf_vax_link_hash_table_create): Likewise. * elf32-xtensa.c (elf_xtensa_link_hash_table_create), (elf_xtensa_new_section_hook): Likewise. * elf64-alpha.c (elf64_alpha_bfd_link_hash_table_create), (get_got_entry, elf64_alpha_check_relocs): Likewise. * elf64-hppa.c (elf64_hppa_hash_table_create): Likewise. * elf64-ia64-vms.c (elf64_ia64_object_p): Likewise. * elf64-mmix.c (mmix_elf_new_section_hook): Likewise. * elf64-ppc.c (ppc64_elf_new_section_hook), (ppc64_elf_link_hash_table_create, update_local_sym_info), (update_plt_info, ppc64_elf_check_relocs): Likewise. * elf64-s390.c (elf_s390_link_hash_table_create), (elf_s390_check_relocs): Likewise. * elf64-x86-64.c (elf_x86_64_check_relocs): Likewise. * elflink.c (bfd_elf_link_record_local_dynamic_symbol), (_bfd_elf_link_find_version_dependencies, elf_link_add_object_symbols), (elf_link_add_archive_symbols, compute_bucket_count), (bfd_elf_size_dynsym_hash_dynstr, _bfd_elf_link_hash_table_create), (bfd_elf_get_bfd_needed_list, elf_link_swap_symbols_out), (bfd_elf_final_link): Likewise. * elfnn-aarch64.c (elfNN_aarch64_link_hash_table_create), (elfNN_aarch64_setup_section_lists, elfNN_aarch64_check_relocs), (elfNN_aarch64_new_section_hook): Likewise. * elfnn-ia64.c (elfNN_ia64_object_p): Likewise. * elfnn-riscv.c (riscv_elf_link_hash_table_create), (riscv_elf_check_relocs): Likewise. * elfxx-mips.c (_bfd_mips_elf_new_section_hook), (_bfd_mips_elf_add_symbol_hook, _bfd_mips_elf_check_relocs), (_bfd_mips_elf_modify_segment_map, _bfd_mips_elf_set_section_contents), (_bfd_mips_elf_link_hash_table_create): Likewise. * elfxx-sparc.c (_bfd_sparc_elf_link_hash_table_create), (_bfd_sparc_elf_check_relocs), (_bfd_sparc_elf_new_section_hook): Likewise. * elfxx-tilegx.c (tilegx_elf_link_hash_table_create), (tilegx_elf_check_relocs): Likewise. * elfxx-x86.c (_bfd_x86_elf_link_hash_table_create): Likewise. * format.c (bfd_check_format_matches): Likewise. * hash.c (_bfd_stringtab_init): Likewise. * ihex.c (ihex_scan): Likewise. * irix-core.c (irix_core_core_file_p): Likewise. * linker.c (bfd_wrapped_link_hash_lookup), (_bfd_generic_link_hash_table_create), (_bfd_generic_reloc_link_order): Likewise. * lynx-core.c (lynx_core_file_p): Likewise. * netbsd-core.c (netbsd_core_file_p): Likewise. * osf-core.c (osf_core_core_file_p): Likewise. * pdp11.c (some_aout_object_p, mkobject, make_empty_symbol), (link_hash_table_create, aout_link_write_other_symbol): Likewise. * peXXigen.c (_bfd_XX_bfd_copy_private_section_data): Likewise. * peicode.h (pe_mkobject): Likewise. * ppcboot.c (ppcboot_mkobject, ppcboot_canonicalize_symtab): Likewise. * ptrace-core.c (ptrace_unix_core_file_p): Likewise. * sco5-core.c (read_uarea): Likewise. * som.c (hppa_som_gen_reloc_type, som_object_p, som_prep_headers), (som_write_fixups, som_write_space_strings, som_write_symbol_strings), (som_finish_writing, som_canonicalize_symtab, som_new_section_hook), (som_bfd_copy_private_section_data, bfd_som_set_section_attributes), (bfd_som_attach_aux_hdr, som_write_armap): Likewise. * srec.c (srec_scan): Likewise. * syms.c (_bfd_generic_make_empty_symbol): Likewise. * targets.c (bfd_target_list): Likewise. * tekhex.c (first_phase, tekhex_sizeof_headers): Likewise. * trad-core.c (trad_unix_core_file_p): Likewise. * vms-alpha.c (vms_initialize, alpha_vms_bfd_link_hash_table_create), (vms_new_section_hook): Likewise. * wasm-module.c (wasm_make_empty_symbol): Likewise. * xcofflink.c (xcoff_get_section_contents), (_bfd_xcoff_bfd_link_hash_table_create, xcoff_set_import_path), (xcoff_find_function, bfd_xcoff_link_record_set, xcoff_build_ldsym), (bfd_xcoff_size_dynamic_sections, xcoff_link_input_bfd): Likewise.
2020-02-19c99 elfxx-riscv.c fixAlan Modra2-5/+9
We can't use c99 without enabling c99 support for older compilers that don't enable c99 by default. So if you want to use c99 contructs in binutils you'll need to first arrange for -std=c99 to be passed to older compilers. * elfxx-riscv.c (riscv_multi_letter_ext_valid_p): Don't use C99.
2020-02-19Adjust PR25355 testcaseAlan Modra2-2/+6
* testsuite/ld-plugin/pr25355.d: Allow alpha-linux nm result.
2020-02-19gdbserver: Add RISC-V/Linux supportMaciej W. Rozycki6-0/+311
Implement RISC-V/Linux support for both RV64 and RV32 systems, including XML target description handling based on features determined, GPR and FPR regset support including dynamic sizing of the latter, and software breakpoint handling. Define two NT_FPREGSET regsets of a different size matching the FPR sizes supported for generic `gdbserver' code to pick from according to what the OS supplies. Also handle a glibc bug where ELF_NFPREG is defined in terms of NFPREG, however NFPREG is nowhere defined. 2020-02-19 Maciej W. Rozycki <macro@wdc.com> Andrew Burgess <andrew.burgess@embecosm.com> gdb/ * NEWS: Mention RISC-V GNU/Linux GDBserver support. gdbserver/ * linux-riscv-low.cc: New file. * Makefile.in (SFILES): Add linux-riscv-low.cc, arch/riscv.c, and nat/riscv-linux-tdesc.c. * configure.srv <riscv*-*-linux*> (srv_tgtobj) (srv_linux_regsets, srv_linux_usrregs, srv_linux_thread_db): Define.
2020-02-19gdb/riscv: Update API for looking up target descriptionsAndrew Burgess7-40/+103
In preparation for adding the RISC-V gdbserver, this commit restructures the API for looking up target descriptions. The current API is riscv_create_target_description, which creates a target description from a riscv_gdbarch_features, but also caches the created target descriptions so that for a given features object we always get back the same target description object. This is important for GDB due to the way gdbarch objects are reused. As the same target description is always returned to GDB, and can be returned multiple times, it is returned as a const, however, the current cache actually stores a non-const target description. This is improved in this patch so that the cache holds a const target description. For gdbsever, this caching of the target descriptions is not needed, the gdbserver looks up one target description to describe the target it is actually running on and that is it. Further the gdbserver actually needs to modify the target description that is looked up, so for the gdbsever, returning a const target description is not acceptable. This commit aims to address this by creating two parallel target description APIs, on is the old riscv_create_target_description, however, this no longer performs any caching, and just creates a new target description, and returns it as non-const. The second API is riscv_lookup_target_description, this one performs the caching, and calls riscv_create_target_description to create a target description when needed. In order to make sure the correct API is used in the correct place I have guarded the code using the GDBSERVER define. For GDB the riscv_create_target_description is static, and not generally usable throughout GDB, only the lookup API is global. In gdbserver, the lookup functions, and the cache are not defined or created at all, only the riscv_create_target_description API is available. There should be no user visible changes after this commit. gdb/ChangeLog: * arch/riscv.c (struct riscv_gdbarch_features_hasher): Only define if GDBSERVER is not defined. (riscv_tdesc_cache): Likewise, also store const target_desc. (STATIC_IN_GDB): Define. (riscv_create_target_description): Update declaration with STATIC_IN_GDB. (riscv_lookup_target_description): New function, only define if GDBSERVER is not defined. * arch/riscv.h (riscv_create_target_description): Declare only when GDBSERVER is defined. (riscv_lookup_target_description): New declaration when GDBSERVER is not defined. * nat/riscv-linux-tdesc.c (riscv_linux_read_description): Rename to... (riscv_linux_read_features): ...this, and return riscv_gdbarch_features instead of target_desc. * nat/riscv-linux-tdesc.h: Include 'arch/riscv.h'. (riscv_linux_read_description): Rename to... (riscv_linux_read_features): ...this. * riscv-linux-nat.c (riscv_linux_nat_target::read_description): Update to use riscv_gdbarch_features and riscv_lookup_target_description. * riscv-tdep.c (riscv_find_default_target_description): Use riscv_lookup_target_description instead of riscv_create_target_description.
2020-02-19Automatic date update in version.inGDB Administrator1-1/+1