aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2018-06-01Ptrace support for Aarch64 SVEusers/simark/regcache-for-alanAlan Hayward9-23/+466
Add support for reading and writing registers for Aarch64 SVE. I've made this functionality common as it will be required for gdbserver when gdbsever sve support is added. Given that gdbserver does not yet call this function, I am happy to remove the regcache commonise functions from the previous patch. However, this would result in code in nat/ that does not compile for gdbserver. I wanted to avoid that. We need to support the cases where the kernel only gives us a fpsimd structure. This occurs when there is no active SVE state in the kernel (for example, after starting a new process). As per the covering email description, I've included large chunks of linux kernel headers within an ifdef. Formatting of these macros remains identical to the Kernel versions (ie not adapted to GNU style). Added checks to make sure the vector length has not changed whilst the process is running. 2018-05-11 Alan Hayward <alan.hayward@arm.com> gdb/ * aarch64-linux-nat.c (fetch_sveregs_from_thread): New function. (store_sveregs_to_thread): Likewise. (aarch64_linux_fetch_inferior_registers): Check for SVE. (aarch64_linux_store_inferior_registers): Likewise. * nat/aarch64-sve-linux-ptrace.c (aarch64_sve_get_sveregs): New function. (aarch64_sve_regs_copy_to_regcache): Likewise. (aarch64_sve_regs_copy_from_regcache): Likewise. * nat/aarch64-sve-linux-ptrace.h (aarch64_sve_get_sveregs): New declaration. (aarch64_sve_regs_copy_to_regcache): Likewise. (aarch64_sve_regs_copy_from_regcache): Likewise. (sve_context): Structure from Linux headers. (SVE_SIG_ZREGS_SIZE): Define from Linux headers. (SVE_SIG_ZREG_SIZE): Likewise. (SVE_SIG_PREG_SIZE): Likewise. (SVE_SIG_FFR_SIZE): Likewise. (SVE_SIG_REGS_OFFSET): Likewise. (SVE_SIG_ZREGS_OFFSET): Likewise. (SVE_SIG_ZREG_OFFSET): Likewise. (SVE_SIG_ZREGS_SIZE): Likewise. (SVE_SIG_PREGS_OFFSET): Likewise. (SVE_SIG_PREG_OFFSET): Likewise. (SVE_SIG_PREGS_SIZE): Likewise. (SVE_SIG_FFR_OFFSET): Likewise. (SVE_SIG_REGS_SIZE): Likewise. (SVE_SIG_CONTEXT_SIZE): Likewise. (SVE_PT_REGS_MASK): Likewise. (SVE_PT_REGS_FPSIMD): Likewise. (SVE_PT_REGS_SVE): Likewise. (SVE_PT_VL_INHERIT): Likewise. (SVE_PT_VL_ONEXEC): Likewise. (SVE_PT_REGS_OFFSET): Likewise. (SVE_PT_FPSIMD_OFFSET): Likewise. (SVE_PT_FPSIMD_SIZE): Likewise. (SVE_PT_SVE_ZREG_SIZE): Likewise. (SVE_PT_SVE_PREG_SIZE): Likewise. (SVE_PT_SVE_FFR_SIZE): Likewise. (SVE_PT_SVE_FPSR_SIZE): Likewise. (SVE_PT_SVE_FPCR_SIZE): Likewise. (__SVE_SIG_TO_PT): Likewise. (SVE_PT_SVE_OFFSET): Likewise. (SVE_PT_SVE_ZREGS_OFFSET): Likewise. (SVE_PT_SVE_ZREG_OFFSET): Likewise. (SVE_PT_SVE_ZREGS_SIZE): Likewise. (SVE_PT_SVE_PREGS_OFFSET): Likewise. (SVE_PT_SVE_PREG_OFFSET): Likewise. (SVE_PT_SVE_PREGS_SIZE): Likewise. (SVE_PT_SVE_FFR_OFFSET): Likewise. (SVE_PT_SVE_FPSR_OFFSET): Likewise. (SVE_PT_SVE_FPCR_OFFSET): Likewise. (SVE_PT_SVE_SIZE): Likewise. (SVE_PT_SIZE): Likewise. (HAS_SVE_STATE): New define. gdbserver * Makefile.in: Add aarch64-sve-linux-ptrace.c.
2018-06-01Add methods to gdbserver regcache and raw_compareAlan Hayward4-11/+71
Add additional functions to gdbserver regcache to make it more like gdb regcache. This will allow the next patch to add a common function which uses regcache. The alternatives for the next patch would be to either duplicate the common code in both gdb and gdbserver, or alternatively pass function pointers for read register, write register, get status to the common code. In addition, add a register compare function. This will be used in the next patch. Alternatively instead of adding a new function, I could read into a buffer and then compare. 2018-05-11 Alan Hayward <alan.hayward@arm.com> gdb/ * regcache.c (regcache::raw_compare): New function. * regcache.h (regcache::raw_compare): New declaration. gdbserver/ * regcache.c (register_data): New function. (supply_register): Call member function. (regcache::raw_supply): Replacement for supply_register. (collect_register): Call member function. (regcache::raw_collect): Replacement for collect_register. (regcache::get_register_status): New function. (regcache::raw_compare): Likewise. * regcache.h: (regcache::raw_supply): New declaration. * (regcache::raw_collect): Likewise. * (regcache::raw_compare): Likewise. * (regcache::get_register_status): Likewise.
2018-05-31Aarch64 SVE pseudo register supportAlan Hayward2-22/+130
Add the functionality for reading/writing psuedo registers. On SVE the V registers are pseudo registers. This is supported by adding AARCH64_SVE_V0_REGNUM. 2018-05-11 Alan Hayward <alan.hayward@arm.com> * aarch64-tdep.c (AARCH64_SVE_V0_REGNUM): Add define. (aarch64_vnv_type): Add function. (aarch64_pseudo_register_name): Add V regs for SVE. (aarch64_pseudo_register_type): Likewise. (aarch64_pseudo_register_reggroup_p): Likewise. (aarch64_pseudo_read_value_2): Use V0 offset for SVE (aarch64_pseudo_read_value): Add V regs for SVE. (aarch64_pseudo_write_2): Use V0 offset for SVE (aarch64_pseudo_write): Add V regs for SVE. * aarch64-tdep.h (struct gdbarch_tdep): Add vnv_type.
2018-05-31Add aarch64 psuedo help functionsAlan Hayward1-119/+54
Reduce code copy/paste by adding two helper functions for aarch64_pseudo_read_value and aarch64_pseudo_write The patch does not change any functionality. 2018-05-11 Alan Hayward <alan.hayward@arm.com> * aarch64-tdep.c (aarch64_pseudo_read_value_2): New helper func. (aarch64_pseudo_write_2): Likewise. (aarch64_pseudo_read_value): Use helper. (aarch64_pseudo_write): Likewise.
2018-05-31Enable SVE for GDBAlan Hayward3-19/+70
This patch enables SVE support for GDB by reading the VQ when creating a target description. It also ensures that SVE is taken into account when creating the tdep structure, and stores the current VQ value directly in tdep. With this patch, gdb on an aarch64 system with SVE will now detect SVE. The SVE registers will be displayed (but the contents will be invalid). The following patches fill out the contents. 2018-05-101 Alan Hayward <alan.hayward@arm.com> * aarch64-linux-nat.c (aarch64_linux_read_description): Support SVE. * aarch64-tdep.c (aarch64_get_tdesc_vq): New function. (aarch64_gdbarch_init): Check for SVE. * aarch64-tdep.h (gdbarch_tdep::has_sve): New function.
2018-05-31Add SVE register definesAlan Hayward2-1/+35
Add all the SVE register defines used by the later patches. In order to prevent gaps in the register numbering, the Z registers reuse the V register numbers (which become pseudos on SVE). 2018-05-11 Alan Hayward <alan.hayward@arm.com> * aarch64-tdep.c (aarch64_sve_register_names): New const var. * arch/aarch64.h (enum aarch64_regnum): Add SVE entries. (AARCH64_SVE_Z_REGS_NUM): New define. (AARCH64_SVE_P_REGS_NUM): Likewise. (AARCH64_SVE_NUM_REGS): Likewise.
2018-05-31Make target_store_registers take reg_bufferSimon Marchi33-106/+110
2018-05-31Use reg_buffer in target_fetch_registers interfaceSimon Marchi94-280/+303
2018-05-31Move supply and collect things to reg_bufferSimon Marchi2-28/+28
2018-05-31Use unique_ptr in reg-bufferSimon Marchi2-16/+13
2018-05-31Change type of reg_buffer::m_register_status to register_statusSimon Marchi3-9/+10
The type of reg_buffer::m_register_status is an array of signed char, probably to ensure that each element takes up only one byte. Instead, we can force the underlying type of register_status to be signed char and use the enum type. gdb/ChangeLog: * common/common-regcache.h (enum register_status): Add underlying type "signed char". * regcache.h (reg_buffer) <m_register_status>: Change type to register_status *. * regcache.c (reg_buffer::reg_buffer): Alocate arrays of register_status instead of signed char. (reg_buffer::save): Use REG_UNKNOWN instead of 0. (reg_buffer::get_register_status): Remove cast. (readable_regcache::raw_read): Remove cast. (readable_regcache::cooked_read): Remove cast.
2018-05-31Fix Alpha native GDB buildUros Bizjak2-5/+6
[Commit log by Simon Marchi] I get this error: CXX linux-nat.o /home/simark/src/binutils-gdb/gdb/linux-nat.c: In function 'void save_stop_reason(lwp_info*)': /home/simark/src/binutils-gdb/gdb/linux-nat.c:2718:9: error: duplicated 'if' condition [-Werror=duplicated-cond] else if (GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code)) ^~ In file included from /home/simark/src/binutils-gdb/gdb/linux-nat.c:31:0: /home/simark/src/binutils-gdb/gdb/nat/linux-ptrace.h:173:41: note: previously used here # define GDB_ARCH_IS_TRAP_BRKPT(X) ((X) == TRAP_BRKPT) ~~~~~^~~~~~~~~~~~~~ /home/simark/src/binutils-gdb/gdb/linux-nat.c:2709:13: note: in expansion of macro 'GDB_ARCH_IS_TRAP_BRKPT' else if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code)) ^~~~~~~~~~~~~~~~~~~~~~ For Alpha, we currently define GDB_ARCH_IS_TRAP_BRKPT and GDB_ARCH_IS_TRAP_HWBKPT both to ((X) == TRAP_BRKPT), which causes the two if branches to be duplicated. Alpha doesn't have hardware breakpoints, so the Linux kernel for Alpha never sets si_code to TRAP_HWBKPT. We can just remove the special definitions of these macros for __alpha__ and rely on the default ones. Since the kernel will never report TRAP_HWBKPT, we will just never enter the "hardware breakpoint" branch on Alpha (which is fine since it doesn't have them). gdb/ChangeLog: * nat/linux-ptrace.h [__alpha__] (GDB_ARCH_IS_TRAP_BRKPT, GDB_ARCH_IS_TRAP_HWBKPT): Remove definitions.
2018-05-31arch-utils: Make the last endianness actually chosen stickyMaciej W. Rozycki8-0/+149
Use the last endianness explicitly selected, either by choosing a binary file or with the `set endian' command, for future automatic selection. As observed with the `gdb.base/step-over-no-symbols.exp' test case when discarding the binary file even while connected to a live target the endianness automatically selected is reset to the GDB target's default, even if it does not match the endianness of the target being talked to. For example with a little-endian MIPS target and the default endianness being big we get this: (gdb) file .../gdb/testsuite/outputs/gdb.base/step-over-no-symbols/step-over-no-symbols Reading symbols from .../gdb/testsuite/outputs/gdb.base/step-over-no-symbols/step-over-no-symbols...done. (gdb) delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main Breakpoint 1 at 0x400840: file .../gdb/testsuite/gdb.base/start.c, line 34. [...] (gdb) continue Continuing. Breakpoint 1, main () at .../gdb/testsuite/gdb.base/start.c:34 34 foo(); (gdb) delete breakpoints Delete all breakpoints? (y or n) y (gdb) info breakpoints No breakpoints or watchpoints. (gdb) file A program is being debugged already. Are you sure you want to change the file? (y or n) y No executable file now. Discard symbol table from `.../gdb/testsuite/outputs/gdb.base/step-over-no-symbols/step-over-no-symbols'? (y or n) y No symbol file now. (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=off: purging symbols p /x $pc $1 = 0x40084000 (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=off: get before PC break *$pc Breakpoint 2 at 0x40084000 (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=off: break *$pc set displaced-stepping off (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=off: set displaced-stepping off stepi Warning: Cannot insert breakpoint 2. Cannot access memory at address 0x40084000 Command aborted. (gdb) FAIL: gdb.base/step-over-no-symbols.exp: displaced=off: stepi p /x $pc $2 = 0x40084000 (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=off: get after PC FAIL: gdb.base/step-over-no-symbols.exp: displaced=off: advanced Remote debugging from host ... monitor exit (gdb) Killing process(es): ... testcase .../gdb/testsuite/gdb.base/step-over-no-symbols.exp completed in 2 seconds which shows that with the removal of the executable debugged the endianness of $pc still at `main' gets swapped and the value in that register is now incorrectly interpreted as 0x40084000 rather than 0x400840 as shown earlier on with the `break' command. Consequently the debug session no longer works as expected, until the endianness is overridden with an explicit `set endian little' command. This will happen while working with any target hardware whose endianness does not match the default GDB target's endianness guessed and recorded for a later use in `initialize_current_architecture'. Given that within a single run of GDB it is more likely that consecutive target connections will use the same endianness than that the endianness will be swapped between connections, it makes sense to preserve the last endianness explicitly selected as the automatic default. It will make a session like above, where an executable is removed, work correctly and will retain the endianness for a further reconnection to the target. And the new automatic default will still be overridden by subsequently choosing a binary to debug, or with an explicit `set endian' command. With the change in place the test case above completes successfully: (gdb) continue Continuing. Breakpoint 1, main () at .../gdb/testsuite/gdb.base/start.c:34 34 foo(); (gdb) delete breakpoints Delete all breakpoints? (y or n) y (gdb) info breakpoints No breakpoints or watchpoints. (gdb) file A program is being debugged already. Are you sure you want to change the file? (y or n) y No executable file now. Discard symbol table from `.../gdb/testsuite/outputs/gdb.base/step-over-no-symbols/step-over-no-symbols'? (y or n) y No symbol file now. (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=off: purging symbols p /x $pc warning: GDB can't find the start of the function at 0x400840. GDB is unable to find the start of the function at 0x400840 and thus can't determine the size of that function's stack frame. This means that GDB may be unable to access that stack frame, or the frames below it. This problem is most likely caused by an invalid program counter or stack pointer. However, if you think GDB should simply search farther back from 0x400840 for code which looks like the beginning of a function, you can increase the range of the search using the `set heuristic-fence-post' command. $1 = 0x400840 (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=off: get before PC break *$pc Breakpoint 2 at 0x400840 (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=off: break *$pc set displaced-stepping off (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=off: set displaced-stepping off stepi warning: GDB can't find the start of the function at 0x4007f8. 0x004007f8 in ?? () (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=off: stepi p /x $pc $2 = 0x4007f8 (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=off: get after PC PASS: gdb.base/step-over-no-symbols.exp: displaced=off: advanced Remote debugging from host ... monitor exit (gdb) Killing process(es): ... testcase .../gdb/testsuite/gdb.base/step-over-no-symbols.exp completed in 2 seconds gdb/ * arch-utils.c (gdbarch_info_fill): Set `default_byte_order' to the endianness selected. * NEWS: Document `set endian auto' mode operation update. gdb/doc/ * gdb.texinfo (Choosing Target Byte Order): Document endianness selection details with the `set endian auto' mode. gdb/testsuite * gdb.base/endian.exp: New test. * gdb.base/endian.c: New test source.
2018-05-31Function for reading the Aarch64 SVE vector lengthAlan Hayward8-1/+169
Returns 0 for systems without SVE support. Note the defines taken from Linux kernel headers in aarch64-sve-linux-ptrace.h. gdb/ * Makefile.in: Add new header. * gdb/arch/aarch64.h (sve_vg_from_vl): New macro. (sve_vl_from_vg): Likewise. (sve_vq_from_vl): Likewise. (sve_vl_from_vq): Likewise. (sve_vq_from_vg): Likewise. (sve_vg_from_vq): Likewise. * configure.nat: Add new c file. * nat/aarch64-sve-linux-ptrace.c: New file. * nat/aarch64-sve-linux-ptrace.h: New file. gdbserver/ * configure.srv: Add new c/h file.
2018-05-31Add Aarch64 SVE target descriptionAlan Hayward11-18/+230
No code uses the new descriptions yet. gdb/ * aarch64-linux-nat.c (aarch64_linux_read_description): Add parmeter zero. * aarch64-linux-tdep.c (aarch64_linux_core_read_description): Likewise. * aarch64-tdep.c (tdesc_aarch64_list): Add. (aarch64_read_description): Use VQ to index tdesc_aarch64_list. (aarch64_gdbarch_init): Add parmeter zero. * aarch64-tdep.h (aarch64_read_description): Add VQ parmeter. * arch/aarch64.c (aarch64_create_target_description): Check VQ. * arch/aarch64.h (aarch64_create_target_description): Add VQ. parmeter. * doc/gdb.texinfo: Describe SVE feature * features/aarch64-sve.c: New file. gdbserver/ * linux-aarch64-tdesc.c (aarch64_linux_read_description): Add null VQ.
2018-05-31include: 2018-05-28 Bernd Edlinger <bernd.edlinger@hotmail.de>edlinger4-1/+32
include: * splay-tree.h (splay_tree_compare_strings, splay_tree_delete_pointers): Declare new utility functions. libiberty: 2018-05-28 Bernd Edlinger <bernd.edlinger@hotmail.de> * splay-tree.c (splay_tree_compare_strings, splay_tree_delete_pointers): New utility functions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260850 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-31Improve boostrap-ubsan config (PR bootstrap/64914).marxin2-1/+6
2018-05-10 Martin Liska <mliska@suse.cz> PR bootstrap/64914 * md5.c: Use strict alignment with UBSAN_BOOTSTRAP. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260112 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-31* argv.c (expandargv): Fix memory leak for expanded arguments.law2-0/+6
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@259775 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-31Unset gdbarch significant_addr_bit by defaultOmair Javaid4-5/+14
This patch fixes a bug introduced by fix to AArch64 pointer tagging. In our fix for tagged pointer support our agreed approach was to sign extend user-space address after clearing tag bits. This is not same for all architectures and this patch allows sign extension for addresses on targets which specifically set significant_addr_bit. More information about patch that caused the issues and discussion around tagged pointer support can be found in links below: https://sourceware.org/ml/gdb-patches/2018-05/msg00000.html https://sourceware.org/ml/gdb-patches/2017-12/msg00159.html gdb/ChangeLog: 2018-05-31 Omair Javaid <omair.javaid@linaro.org> PR gdb/23210 * gdbarch.sh (significant_addr_bit): Default to zero when not set by target architecture. * gdbarch.c: Re-generated. * utils.c (address_significant): Update.
2018-05-31Run a few more binutils tests non-nativeAlan Modra3-19/+11
Setting CC_FOR_TARGET from the environment CC was just plain wrong, and no doubt the reason these tests were only run natively. * testsuite/binutils-all/compress.exp (test_gnu_debuglink): Don't set CC_FOR_TARGET. Run test non-native. * testsuite/binutils-all/objdump.exp (test_build_id_debuglink): Likewise. (test_follow_debuglink): Run test non-native.
2018-05-31Automatic date update in version.inGDB Administrator1-1/+1
2018-05-30(ARI) remove trailing newline in call to error in stack.c::func_commandJoel Brobecker2-1/+5
gdb/ChangeLog: * stack.c (func_command): Remove trailing newline in call to error.
2018-05-30Remove regcache_raw_collectSimon Marchi58-417/+354
Remove regcache_raw_collect, update callers to use regcache::raw_collect. gdb/ChangeLog: * regcache.h (regcache_raw_collect): Remove, update callers to use regcache::raw_collect. * regcache.c (regcache_raw_collect): Remove.
2018-05-30Remove regcache_raw_supplySimon Marchi88-659/+581
Remove regcache_raw_supply, update callers to use detached_regcache::raw_supply. gdb/ChangeLog: * regcache.h (regcache_raw_supply): Remove, update callers to use detached_regcache::raw_supply. * regcache.c (regcache_raw_supply): Remove.
2018-05-30Remove regcache_cooked_write_partSimon Marchi12-64/+47
Remove regcache_cooked_write_part, update callers to use regcache::cooked_write_part. gdb/ChangeLog: * regcache.h (regcache_cooked_write_part): Remove, update callers to use regcache::cooked_write_part. * regcache.c (regcache_cooked_write_part): Remove.
2018-05-30Remove regcache_cooked_read_partSimon Marchi11-39/+29
Remove regcache_cooked_read_part, update callers to use readable_regcache::cooked_read_part. gdb/ChangeLog: * regcache.h (regcache_cooked_read_part): Remove, update callers to use readable_regcache::cooked_read_part. * regcache.c (regcache_cooked_read_part): Remove.
2018-05-30Remove regcache_cooked_read_valueSimon Marchi4-13/+9
Remove regcache_cooked_read_value, update callers to use readable_regcache::cooked_read_value. gdb/ChangeLog: * regcache.h (regcache_cooked_read_value): Remove, update callers to use readable_regcache::cooked_read_value. * regcache.c (regcache_cooked_read_value): Remove.
2018-05-30Remove regcache_cooked_writeSimon Marchi36-310/+246
Remove regcache_cooked_write, update callers to use regcache::cooked_write. gdb/ChangeLog: * regcache.h (regcache_cooked_write): Remove, update callers to use regcache::cooked_write. * regcache.c (regcache_cooked_write): Remove.
2018-05-30Remove regcache_invalidateSimon Marchi5-13/+10
Remove regcache_invalidate, update callers to use detached_regcache::invalidate instead. gdb/ChangeLog: * regcache.h (regcache_invalidate): Remove, update callers to use detached_regcache::invalidate instead. * regcache.c (regcache_invalidate): Remove.
2018-05-30Remove regcache_raw_write_partSimon Marchi12-34/+26
Remove regcache_raw_write_part, update callers to use regcache::raw_write_part instead. gdb/ChangeLog: * regcache.h (regcache_raw_write_part): Remove, update callers to use regcache::raw_write_part instead. * regcache.c (regcache_raw_write_part): Remove.
2018-05-30Remove regcache_raw_read_partSimon Marchi7-15/+12
Remove regcache_raw_read_part, update callers to use readable_regcache::raw_read_part instead. gdb/ChangeLog: * regcache.h (regcache_raw_read_part): Remove, update callers to use readable_regcache::raw_read_part instead. * regcache.c (regcache_raw_read_part): Remove.
2018-05-30Remove regcache_cooked_readSimon Marchi31-143/+127
Remove regcache_cooked_read, update callers to use readable_regcache::cooked_read instead. gdb/ChangeLog: * regcache.h (regcache_cooked_read): Remove, update callers to use readable_regcache::cooked_read instead. * regcache.c (regcache_cooked_read): Remove.
2018-05-30Remove regcache_raw_writeSimon Marchi31-142/+113
Remove regcache_raw_write, update all callers to use regcache::raw_write instead. gdb/ChangeLog: * regcache.h (regcache_raw_write): Remove, update callers to use regcache::raw_write instead. * regcache.c (regcache_raw_write): Remove.
2018-05-30Remove regcache_raw_readSimon Marchi21-63/+61
Remove regcache_raw_read, update all callers to use readable_regcache::raw_read instead. gdb/ChangeLog: * regcache.h (regcache_raw_read): Remove, update callers to use readable_regcache::raw_read instead. * regcache.c (regcache_raw_read): Remove.
2018-05-30Remove regcache_raw_updateSimon Marchi4-13/+8
Remove regcache_raw_update, update callers to use readable_regcache::raw_update instead. gdb/ChangeLog: * regcache.h (regcache_raw_update): Remove, update callers to use readable_regcache::raw_update instead. * regcache.c (regcache_raw_update): Remove.
2018-05-30Remove regcache_register_statusSimon Marchi12-72/+58
Remove regcache_register_status, change callers to use reg_buffer::get_register_status directly. gdb/ChangeLog: * regcache.h (regcache_register_status): Remove, update callers to use reg_buffer::get_register_status directly instead. * regcache.c (regcache_register_status): Remove.
2018-05-30Remove regcache_get_ptidSimon Marchi50-139/+135
Remove regcache_get_ptid, change all callers to call the regcache method directly. gdb/ChangeLog: * regcache.h (regcache_get_ptid): Remove, update all callers to call regcache::ptid instead. * regcache.c (regcache_get_ptid): Remove.
2018-05-30Add option to ar's 't' command to display the offset of elements within the ↵Ant Bikeneev9-17/+64
archive. PR 23107 * ar.c (display_offsets): New variable. (usage): Add description of 'O' operator. (decode_option): Handle 'O' operator. (print_descr): Pass display_offsets to print_arelt_descr. * arsup.c: Update call to printy_arelt_descr. * objdump.c: Likewise. * bucomm.c (print_arelt_descr): If offsets parameter is true then display offset of archive element within the archive. * bucomm.h: Update prototype for print_arelt_descr. * doc/binutils.texi: Update description of ar command. * NEWS: Mention the new feature. * testsuite/binutils-all/ar.exp: Add text of new feature.
2018-05-30Add or1k target to --enable-targets=allSimon Marchi2-0/+5
The or1k-tdep.o object is missing from the ALL_TARGET_OBS, which means it's not currently included in an --enable-targets=all build. gdb/ChangeLog: * Makefile.in (ALL_TARGET_OBS): Add or1k-tdep.o.
2018-05-302018-05-30 Amaan Cheval <amaan.cheval@gmail.com>Amaan Cheval2-0/+9
* config.bfd (x86_64-*-*): Add pei-x86-64 target to x86_64-*-rtems* This is needed to generate UEFI application image files from ELFs.
2018-05-30Mark END_CATCH as ATTRIBUTE_NORETURN (-Wmaybe-uninitialized warnings)Pedro Alves2-1/+6
This commit fixes a set of -Wmaybe-uninitialized warnings in GDB and GDBserver, seen with GCC 7.3.1 on F27 at -O2. Specifically, all of these: src/gdb/breakpoint.c:5040:4: warning: ‘e’ may be used uninitialized in this function [-Wmaybe-uninitialized] src/gdb/cli/cli-cmds.c:277:71: warning: ‘tracker’ may be used uninitialized in this function [-Wmaybe-uninitialized] src/gdb/cli/cli-cmds.c:302:22: warning: ‘word’ may be used uninitialized in this function [-Wmaybe-uninitialized] src/gdb/gdbserver/server.c:1895:7: warning: ‘result’ may be used uninitialized in this function [-Wmaybe-uninitialized] src/gdb/gdbserver/server.c:1966:7: warning: ‘result’ may be used uninitialized in this function [-Wmaybe-uninitialized] For example, looking at one of the gdbserver ones in more detail: ../../../src/gdb/gdbserver/server.c: In function ‘int handle_qxfer_btrace_conf(const char*, gdb_byte*, const gdb_byte*, ULONGEST, LONGEST)’: ../../../src/gdb/gdbserver/server.c:1966:7: warning: ‘result’ may be used uninitialized in this function [-Wmaybe-uninitialized] if (result != 0) ^~ In this case (like the others), the 'result' variable is assigned in both TRY and CATCH blocks: TRY { result = target_read_btrace_conf (thread->btrace, &cache); if (result != 0) memcpy (own_buf, cache.buffer, cache.used_size); } CATCH (exception, RETURN_MASK_ERROR) { sprintf (own_buf, "E.%s", exception.message); result = -1; } END_CATCH if (result != 0) return -3; so it would seem like the warning is bogus. However, END_CATCH is really a catch block in disguise, and that path indeed does not initialize the variable: #define END_CATCH \ catch (...) \ { \ exception_rethrow (); \ } \ } exception_rethrow does not return normally (it rethrows the current exception after running cleanups), but the compiler can not see that. If it could return normally, then indeed 'result' could be used uninitialized if the TRY block threw some non-gdb exception, which would be caught by END_CATCH. The fix it to let the compiler know that the exception_rethrow does not return normally, using ATTRIBUTE_NORETURN. gdb/ChangeLog: 2018-05-30 Pedro Alves <palves@redhat.com> * common/common-exceptions.h (exception_rethrow): Use ATTRIBUTE_NORETURN.
2018-05-30Add znver2 support.Amit Pawar15-36/+169
gas/ * config/tc-i386.c (cpu_flag_init): Add CPU_ZNVER2_FLAGS. * doc/c-i386.texi : Document znver2. * gas/testsuite/gas/i386/arch-13.s: Updated for znver2. * gas/testsuite/gas/i386/arch-13.d: Updated. * gas/testsuite/gas/i386/arch-13-znver1.d: Updated. * gas/testsuite/gas/i386/arch-13-znver2.d: New file. * gas/testsuite/gas/i386/x86-64-arch-3.s: Updated for znver2. * gas/testsuite/gas/i386/x86-64-arch-3.d: Updated. * gas/testsuite/gas/i386/x86-64-arch-3-znver1.d: Updated. * gas/testsuite/gas/i386/x86-64-arch-3-znver2.d: New file. * gas/testsuite/gas/i386/i386.exp: Updated for new test. opcode/ * i386-gen.c (cpu_flag_init): Add CPU_ZNVER2_FLAGS. * i386-init.h : Regenerated.
2018-05-29Remove "struct" keyword in range-based for loopsSimon Marchi7-10/+22
I get this kind of errors with GCC 6.3.0: /home/simark/src/binutils-gdb/gdb/breakpoint.c: In function 'void print_solib_event(int)': /home/simark/src/binutils-gdb/gdb/breakpoint.c:4618:12: error: types may not be defined in a for-range-declaration [-Werror] for (struct so_list *iter : current_program_space->added_solibs) ^~~~~~ Removing the struct keyword makes it happy. gdb/ChangeLog: * breakpoint.c (print_solib_event, check_status_catch_solib): Remove struct keyword in range-based for loops. * dbxread.c (find_corresponding_bincl_psymtab): Likewise. * dwarf2read.c (compute_delayed_physnames, rust_union_quirks); Likewise. * linespec.c (find_superclass_methods, search_minsyms_for_name): Likewise. * symfile.c (addr_info_make_relative): Likewise. * thread.c (value_in_thread_stack_temporaries): Likewise.
2018-05-30Automatic date update in version.inGDB Administrator1-1/+1
2018-05-29Removing lookup_minimal_symbol_and_objfileWeimin Pan7-28/+15
Function lookup_minimal_symbol_and_objfile iterates on all objfiles and calls lookup_minimal_symbol for each of them, effectively searching in all objfiles. lookup_bound_minimal_symbol calls lookup_minimal_symbol with NULL, which also effectively searches all objfiles. AFAIK, they do exactly the same thing, so we can get rid of one (and lookup_minimal_symbol_and_objfile happens to be the most inefficient because it ends up n^2 on the number of objfiles). Tested in both aarch64-linux-gnu and amd64-linux-gnu. No regressions.
2018-05-29Fix fall-through comment in windows-nat.cTom Tromey2-1/+6
Now that the mingw builder in the buildbot is working again, it pointed out a build failure due to a missing fall-through comment in windows-nat.c. This patch fixes the problem. Tested by first triggering the failure with a local mingw build, then by rebuilding successfully with the patch. I'm checking this in as obvious. gdb/ChangeLog 2018-05-29 Tom Tromey <tom@tromey.com> * windows-nat.c (handle_exception): Update fall-through comment.
2018-05-29Change program_space::added_solibs to a std::vectorTom Tromey5-23/+18
This changes program_space::added_solibs to a std::vector, removing a VEC. Tested by the buildbot. gdb/ChangeLog 2018-05-29 Tom Tromey <tom@tromey.com> * progspace.h (so_list_ptr): Remove typedef. Don't declare VEC. (struct program_space) <added_solibs>: Now a std::vector. * breakpoint.c (print_solib_event): Update. (check_status_catch_solib): Update. * progspace.c (clear_program_space_solib_cache): Update. * solib.c (update_solib_list): Update.
2018-05-29Remove a VEC from type.cTom Tromey5-80/+87
This removes a VEC from type.c, by using std::vector. While doing this I also took the opportunity to change types_deeply_equal to return bool. This caught some weird code in typy_richcompare, now fixed. And, since I was changing types_deeply_equal, it seemed like a good idea to also change types_equal, so this patch includes that as well. Tested by the buildbot. ChangeLog 2018-05-29 Tom Tromey <tom@tromey.com> * python/py-type.c (typy_richcompare): Update. * guile/scm-type.c (tyscm_equal_p_type_smob): Update. * gdbtypes.h (types_deeply_equal): Return bool. (types_equal): Likewise. * gdbtypes.c (type_equality_entry_d): Remove typedef. Don't declare VEC. (check_types_equal): Change worklist to std::vector. Return bool. (struct type_equality_entry): Add constructor. (compare_maybe_null_strings): Return bool. (check_types_worklist): Return bool. Change worklist to std::vector. (types_deeply_equal): Use std::vector. (types_equal): Return bool. (compare_maybe_null_strings): Simplify.
2018-05-29Remove tp_t typedefTom Tromey2-5/+4
The tp_t typedef is no longer used and can be removed. ChangeLog 2018-05-29 Tom Tromey <tom@tromey.com> * record-btrace.c (tp_t): Remove typedef. Don't declare VEC.
2018-05-29Remove const_char_ptr typedefTom Tromey3-6/+6
The const_char_ptr is no longer used, so it can be removed. ChangeLog 2018-05-29 Tom Tromey <tom@tromey.com> * objc-lang.h: Don't include cp-support.h. * common/gdb_vecs.h (const_char_ptr): Remove typedef. Don't declare VEC.