aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2018-05-20Automatic date update in version.inGDB Administrator1-1/+1
2018-05-19Automatic date update in version.inGDB Administrator1-1/+1
2018-05-18Automatic date update in version.inGDB Administrator1-1/+1
2018-05-17Automatic date update in version.inGDB Administrator1-1/+1
2018-05-16Automatic date update in version.inGDB Administrator1-1/+1
2018-05-15Automatic date update in version.inGDB Administrator1-1/+1
2018-05-14Automatic date update in version.inGDB Administrator1-1/+1
2018-05-13Automatic date update in version.inGDB Administrator1-1/+1
2018-05-12Automatic date update in version.inGDB Administrator1-1/+1
2018-05-11Automatic date update in version.inGDB Administrator1-1/+1
2018-05-10gdbserver/Windows: crash during connection establishment phaseJoel Brobecker12-28/+81
On Windows, starting a new process with GDBserver seems to work, in the sense that the program does get started, and GDBserver confirms that it is listening for GDB to connect. However, as soon as GDB establishes the connection with GDBserver, and starts discussing with it, GDBserver crashes, with a SEGV. This SEGV occurs in remote-utils.c::prepare_resume_reply... | regp = current_target_desc ()->expedite_regs; | [...] | while (*regp) ... because, in our case, REGP is NULL. This patches fixes the issues by adding a parameter to init_target_desc, in order to make sure that we always provide the list of registers when we initialize a target description. gdb/ChangeLog: PR server/23158: * regformats/regdat.sh: Adjust script, following the addition of the new expedite_regs parameter to init_target_desc. gdb/gdbserver/ChangeLog: PR server/23158: * tdesc.h (init_target_desc) <expedite_regs>: New parameter. * tdesc.c (init_target_desc) <expedite_regs>: New parameter. Use it to set the expedite_regs field in the given tdesc. * x86-tdesc.h: New file. * linux-aarch64-tdesc.c (aarch64_linux_read_description): Adjust following the addition of the new expedite_regs parameter to init_target_desc. * linux-tic6x-low.c (tic6x_read_description): Likewise. * linux-x86-tdesc.c: #include "x86-tdesc.h". (i386_linux_read_description, amd64_linux_read_description): Adjust following the addition of the new expedite_regs parameter to init_target_desc. * lynx-i386-low.c: #include "x86-tdesc.h". (lynx_i386_arch_setup): Adjust following the addition of the new expedite_regs parameter to init_target_desc. * nto-x86-low.c: #include "x86-tdesc.h". (nto_x86_arch_setup): Adjust following the addition of the new expedite_regs parameter to init_target_desc. * win32-i386-low.c: #include "x86-tdesc.h". (i386_arch_setup): Adjust following the addition of the new expedite_regs parameter to init_target_desc.
2018-05-10gdbserver/Windows: Fix "no program to debug" errorJoel Brobecker2-0/+10
Trying to start a program with GDBserver on Windows yields the following error: $ gdbserver.exe --once :4444 simple_main.exe Killing process(es): 5008 No program to debug Exiting The error itself comes from the following code shortly after create_inferior gets called (in server.c::main): /* Wait till we are at first instruction in program. */ create_inferior (program_path.get (), program_args); [...] if (last_status.kind == TARGET_WAITKIND_EXITED || last_status.kind == TARGET_WAITKIND_SIGNALLED) was_running = 0; else was_running = 1; if (!was_running && !multi_mode) error ("No program to debug"); What happens is that the "last_status" global starts initialized as zeroes, which means last_status.kind == TARGET_WAITKIND_EXITED, and we expect create_inferior to be waiting for the inferior to start until reaching the SIGTRAP, and to set the "last_status" global to match that last event we received. I suspect this is an unintended side-effect of the following change... commit 2090129c36c7e582943b7d300968d19b46160d84 Date: Thu Dec 22 21:11:11 2016 -0500 Subject: Share fork_inferior et al with gdbserver ... which removes some code in server.c that was responsible for starting the inferior in a functin that was named start_inferior, and looked like this: signal_pid = create_inferior (new_argv[0], &new_argv[0]); [...] /* Wait till we are at 1st instruction in program, return new pid (assuming success). */ last_ptid = mywait (pid_to_ptid (signal_pid), &last_status, 0, 0); The code has been transitioned to using fork_inferior, but sadly, only for the targets that support it. On Windows, the calls to wait setting "last_status" simply disappeared. This patch adds it back in the Windows-specific implementation of create_inferior. gdb/gdbserver/ChangeLog: PR server/23158: * win32-low.c (win32_create_inferior): Add call to my_wait setting last_status global.
2018-05-10[gdbserver/win32] fatal "glob could not process pattern '(null)'" errorJoel Brobecker2-2/+11
Trying to start GDBserver on Windows currently yields the following error... $ gdbserver.exe --once :4444 simple_main.exe glob could not process pattern '(null)'. Exiting ... after which GDB terminates with a nonzero status. This is because create_process in win32-low.c calls gdb_tilde_expand with the result of a call to get_inferior_cwd without verifying that the returned directory is not NULL: | static BOOL | create_process (const char *program, char *args, | DWORD flags, PROCESS_INFORMATION *pi) | { | const char *inferior_cwd = get_inferior_cwd (); | std::string expanded_infcwd = gdb_tilde_expand (inferior_cwd); This patch avoids this by only calling gdb_tilde_expand when INFERIOR_CWD is not NULL, which is similar to what is done on GNU/Linux for instance. gdb/gdbserver/ChangeLog: PR server/23158: * win32-low.c (create_process): Only call gdb_tilde_expand if inferior_cwd is not NULL.
2018-05-10Fix tagged pointer supportOmair Javaid4-10/+23
This patch fixes tagged pointer support for AArch64 GDB. Linux kernel debugging failure was reported after tagged pointer support was committed. After a discussion around best path forward to manage tagged pointers on GDB side we are going to disable tagged pointers support for aarch64-none-elf-gdb because for non-linux applications we cant be sure if tagged pointers will be used by MMU or not. Also for aarch64-linux-gdb we are going to sign extend user-space address after clearing tag bits. This will help debug both kernel and user-space addresses based on information from linux kernel documentation given below: According to AArch64 memory map: https://www.kernel.org/doc/Documentation/arm64/memory.txt "User addresses have bits 63:48 set to 0 while the kernel addresses have the same bits set to 1." According to AArch64 tagged pointers document: https://www.kernel.org/doc/Documentation/arm64/tagged-pointers.txt The kernel configures the translation tables so that translations made via TTBR0 (i.e. userspace mappings) have the top byte (bits 63:56) of the virtual address ignored by the translation hardware. This frees up this byte for application use. Running gdb testsuite after applying this patch introduces no regressions and tagged pointer test cases still pass. gdb/ChangeLog: 2018-05-10 Omair Javaid <omair.javaid@linaro.org> PR gdb/23127 * aarch64-linux-tdep.c (aarch64_linux_init_abi): Add call to set_gdbarch_significant_addr_bit. * aarch64-tdep.c (aarch64_gdbarch_init): Remove call to set_gdbarch_significant_addr_bit. * utils.c (address_significant): Update to sign extend addr.
2018-05-10Automatic date update in version.inGDB Administrator1-1/+1
2018-05-09Automatic date update in version.inGDB Administrator1-1/+1
2018-05-08Automatic date update in version.inGDB Administrator1-1/+1
2018-05-07Automatic date update in version.inGDB Administrator1-1/+1
2018-05-06Automatic date update in version.inGDB Administrator1-1/+1
2018-05-05Automatic date update in version.inGDB Administrator1-1/+1
2018-05-04Automatic date update in version.inGDB Administrator1-1/+1
2018-05-03Automatic date update in version.inGDB Administrator1-1/+1
2018-05-02Automatic date update in version.inGDB Administrator1-1/+1
2018-05-01Automatic date update in version.inGDB Administrator1-1/+1
2018-04-30Automatic date update in version.inGDB Administrator1-1/+1
2018-04-29Automatic date update in version.inGDB Administrator1-1/+1
2018-04-28Automatic date update in version.inGDB Administrator1-1/+1
2018-04-27Automatic date update in version.inGDB Administrator1-1/+1
2018-04-26Automatic date update in version.inGDB Administrator1-1/+1
2018-04-25Automatic date update in version.inGDB Administrator1-1/+1
2018-04-24Automatic date update in version.inGDB Administrator1-1/+1
2018-04-23Automatic date update in version.inGDB Administrator1-1/+1
2018-04-22Automatic date update in version.inGDB Administrator1-1/+1
2018-04-21Automatic date update in version.inGDB Administrator1-1/+1
2018-04-20Automatic date update in version.inGDB Administrator1-1/+1
2018-04-19Automatic date update in version.inGDB Administrator1-1/+1
2018-04-18Automatic date update in version.inGDB Administrator1-1/+1
2018-04-17Automatic date update in version.inGDB Administrator1-1/+1
2018-04-16Automatic date update in version.inGDB Administrator1-1/+1
2018-04-15Automatic date update in version.inGDB Administrator1-1/+1
2018-04-14Automatic date update in version.inGDB Administrator1-1/+1
2018-04-13Automatic date update in version.inGDB Administrator1-1/+1
2018-04-12Fix -D_GLIBCXX_DEBUG gdb-add-index regressionJan Kratochvil2-9/+21
Fedora Rawhide started to use -D_GLIBCXX_DEBUG which made gdb-add-index failing: gdb: Out-of-bounds vector access while running gdb-add-index https://bugzilla.redhat.com/show_bug.cgi?id=1540559 /usr/include/c++/7/debug/safe_iterator.h:270: Error: attempt to dereference a past-the-end iterator. Objects involved in the operation: iterator "this" @ 0x0x7fffffffcb90 { type = __gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<unsigned char*, std::__cxx1998::vector<unsigned char, gdb::default_init_allocator<unsigned char, std::allocator<unsigned char> > > >, std::__debug::vector<unsigned char, gdb::default_init_allocator<unsigned char, std::allocator<unsigned char> > > > (mutable iterator); state = past-the-end; references sequence with type 'std::__debug::vector<unsigned char, gdb::default_init_allocator<unsigned char, std::allocator<unsigned char> > >' @ 0x0x7fffffffcc50 } /usr/include/c++/7/debug/vector:417: Error: attempt to subscript container with out-of-bounds index 556, but container only holds 556 elements. Objects involved in the operation: sequence "this" @ 0x0x2e87af8 { type = std::__debug::vector<partial_symbol*, std::allocator<partial_symbol*> >; } The two -D_GLIBCXX_DEBUG regressions were made by: commit bc8f2430e08cc2a520db49a42686e0529be4a3bc Author: Jan Kratochvil <jan.kratochvil@redhat.com> Date: Mon Jun 12 16:29:53 2017 +0100 Code cleanup: C++ify .gdb_index producer commit af5bf4ada48ff65b6658be1fab8f9c8f8ab5f319 Author: Simon Marchi <simon.marchi@ericsson.com> Date: Sat Oct 14 08:06:29 2017 -0400 Replace psymbol_allocation_list with std::vector gdb/ChangeLog 2018-04-12 Jan Kratochvil <jan.kratochvil@redhat.com> PR gdb/23053 * dwarf2read.c (data_buf::grow) (write_one_signatured_type) (recursively_write_psymbols) (debug_names::recursively_write_psymbols) (debug_names::write_one_signatured_type): Fix -D_GLIBCXX_DEBUG regression.
2018-04-12Automatic date update in version.inGDB Administrator1-1/+1
2018-04-11Automatic date update in version.inGDB Administrator1-1/+1
2018-04-10Automatic date update in version.inGDB Administrator1-1/+1
2018-04-09Automatic date update in version.inGDB Administrator1-1/+1
2018-04-08Automatic date update in version.inGDB Administrator1-1/+1
2018-04-07Automatic date update in version.inGDB Administrator1-1/+1
2018-04-06Automatic date update in version.inGDB Administrator1-1/+1