aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2018-08-04Automatic date update in version.inGDB Administrator1-1/+1
2018-08-03Automatic date update in version.inGDB Administrator1-1/+1
2018-08-02Automatic date update in version.inGDB Administrator1-1/+1
2018-08-01Automatic date update in version.inGDB Administrator1-1/+1
2018-07-31Remove struct keyword in range-based for loopSimon Marchi2-1/+6
PR gdb/23469 Fix this with gcc 6.3.0: /home/simark/src/binutils-gdb/gdb/symfile.c: In function 'void set_objfile_default_section_offset(objfile*, const section_addr_info&, CORE_ADDR)': /home/simark/src/binutils-gdb/gdb/symfile.c:2114:14: error: types may not be defined in a for-range-declaration [-Werror] for (const struct other_sections *objf_sect : objf_addrs_sorted) ^~~~~~ gdb/ChangeLog: * symfile.c (set_objfile_default_section_offset): Remove struct keyword. (cherry picked from commit ff27d0737ef0c9433a6a7c83c1e678ac57a27699)
2018-07-31Automatic date update in version.inGDB Administrator1-1/+1
2018-07-30Automatic date update in version.inGDB Administrator1-1/+1
2018-07-29Automatic date update in version.inGDB Administrator1-1/+1
2018-07-28Automatic date update in version.inGDB Administrator1-1/+1
2018-07-27Automatic date update in version.inGDB Administrator1-1/+1
2018-07-26Automatic date update in version.inGDB Administrator1-1/+1
2018-07-25Rename tdesc_register_size to tdesc_register_bitsizeAlan Hayward5-8/+14
tdesc_register_size returns number of bits, not bytes. Rename to make it clearer. Also, fixed bug in aarch64_get_tdesc_vq which assumed bytes. gdb/ * target-descriptions.c (tdesc_register_bitsize): Rename. * target-descriptions.h (tdesc_register_bitsize): Likewise. * rs6000-tdep.c (rs6000_gdbarch_init): Use new name. * aarch64-tdep.c (aarch64_get_tdesc_vq): Convert size.
2018-07-25Automatic date update in version.inGDB Administrator1-1/+1
2018-07-24Set CU language before processing any DIEs (symtab/23010 et al)Keith Seitz2-6/+31
This patch is another attempt at really fixing the multitude of assertions being seen where symbols of one language are being added to symbol lists of another language. In this specific case, the backtrace command (thread apply all bt full) that is looking for the compunit containing the PC of the thread. That calls get_prev_frame several times. This function calls (eventually) dwarf2_frame_prev_register. That eventually ends up calling find_pc_compunit_symtab. In this function (find_pc_sect_compunit_symtab actually), we loop over all compunits, calling the "quick" function dw2_find_pc_sect_compunit_symtab. That function calls dw2_instantiate_symtab to read in all the CU's symbols. Now the fun begins. dw2_do_instantiate_symtab queues the per_cu for reading, using a default "pretend" language of language_minimal with the expectation that this will be set later. The DIEs of this (only queued) CU are then processed. The first DIE is DW_TAG_compile_unit. That's handled by read_file_scope. (Nearly) The first thing read_file_scope does is: get_scope_pc_bounds (die, &lowpc, &highpc, cu); This function loops over the children of the current DIE (a compile_unit), looking for bounds. The first such child is a subprogram, and we attempt to get its bounds. We use dwarf2_attr to get at DW_AT_high_pc. This subprogram has DW_AT_specification set, so dwarf_attr (via follow_die_ref/follow_die_offset) will follow that, but follow_die_offset *also* attempts to load the containing CU for the spec DIE. That spec DIE lives inside a CU that is a partial_unit and has no language attribute. So it simply inherits the language from the CU that elicited the read. [That all happens in follow_die_offset.] The original CU's language is still language_minimal -- we haven't gotten to the line in read_file_scope that actually sets the language yet! And that is the cause of these problems. The call to prepare_one_comp_unit needs to be the *first* thing that is done when reading a CU so that the CU's language can be recorded (and inherited by any referenced partial_units). Since a test reproducer for this has been so elusive, this patch also adds a wrapper function around add_symbol_to_list which asserts when adding a symbol of one language to a list containing symbols of a different language. gdb/ChangeLog: 2017-07-24 Keith Seitz <keiths@redhat.com> PR symtab/23010 * dwarf2read.c (dw2_add_symbol_to_list): New function. (fixup_go_packaging, new_symbol): Use dw2_add_symbol_to_list instead of add_symbol_to_list. (read_file_scope): Call prepare_one_comp_unit before reading any other DIEs.
2018-07-24Automatic date update in version.inGDB Administrator1-1/+1
2018-07-23Automatic date update in version.inGDB Administrator1-1/+1
2018-07-22Pass the correct argument to the observer in reread_symbolsTom Tromey2-1/+5
This is actually a patch I found via another route. Joel had asked me to write a test, but I still have not found the time to do this. Meanwhile, -Wunused-variable also found this error. 2018-07-22 Tom Tromey <tom@tromey.com> * symfile.c (reread_symbols): Notify iter, not objfile.
2018-07-22Fix ravenscar-thread.c to use arch_opsTom Tromey2-2/+8
The change to turn target ops into methods accidentally introduced a bug in ravenscar-thread.c, changing some calls that were using "arch_ops" to use the target beneath. This patch changes ravenscar-thread.c to use these variables where appropriate. 2018-07-22 Tom Tromey <tom@tromey.com> * ravenscar-thread.c (ravenscar_thread_target::store_registers): Use arch_ops. (ravenscar_thread_target::prepare_to_store): Likewise.
2018-07-22Automatic date update in version.inGDB Administrator1-1/+1
2018-07-21Automatic date update in version.inGDB Administrator1-1/+1
2018-07-20Automatic date update in version.inGDB Administrator1-1/+1
2018-07-19Fix GDB build using mingw.org's MinGWEli Zaretskii2-0/+10
libiberty/ 2018-07-18 Eli Zaretskii <eliz@gnu.org> PR gdb/23434 * libiberty/simple-object-elf.c (ENOTSUP): If not defined by errno.h, redirect ENOTSUP to ENOSYS. (cherry picked from commit db3410f80f793189d3c8afb8b80951333d3fe007)
2018-07-19Automatic date update in version.inGDB Administrator1-1/+1
2018-07-18Automatic date update in version.inGDB Administrator1-1/+1
2018-07-17Use scoped_free_pendings in coff_symtab_readTom Tromey2-0/+8
PR gdb/18624 concerns an assertion failure that occurs when setting a breakpoint in a Go program on Windows. What happens here is that coff_symtab_read uses buildsym but does not instantiate scoped_free_pendings. So, the struct pending objects are never released. Later, dwarf2read.c calls buildsym_init, which asserts. This patch fixes the problem by instantiating scoped_free_pendings in coff_symtab_read. Tested using the test executable from the PR. I don't know how to test this more fully. 2018-07-17 Tom Tromey <tom@tromey.com> PR gdb/18624: * coffread.c (coff_symtab_read): Use scoped_free_pendings.
2018-07-17Automatic date update in version.inGDB Administrator1-1/+1
2018-07-16Automatic date update in version.inGDB Administrator1-1/+1
2018-07-15Automatic date update in version.inGDB Administrator1-1/+1
2018-07-14Automatic date update in version.inGDB Administrator1-1/+1
2018-07-13Automatic date update in version.inGDB Administrator1-1/+1
2018-07-12Automatic date update in version.inGDB Administrator1-1/+1
2018-07-11GDB: Work around D;PID handling bug in older GDBservers (PR gdb/23377)Pedro Alves2-0/+14
This commit adds a GDB workaround for the GDBserver bug exposed by commit f2ffa92bbce9 ("gdb: Eliminate the 'stop_pc' global"), so that newer GDBs can continue working with older GDBservers. gdb/ChangeLog: 2018-07-11 Pedro Alves <palves@redhat.com> PR gdb/23377 * remote.c (remote_target::remote_detach_pid): Call set_current_process.
2018-07-11GDBserver: Don't assume a current process in D;PID implementation (PR gdb/23377)Pedro Alves4-24/+40
This fixes a gdb.base/multi-forks.exp regression with GDBserver. Git commit f2ffa92bbce9 ("gdb: Eliminate the 'stop_pc' global") caused the regression by exposing a latent bug in gdbserver. The bug is that GDBserver's implementation of the D;PID packet incorrectly assumes that the selected thread points to the process being detached. This happens via the any_persistent_commands call, which calls current_process: (gdb) bt #0 0x000000000040a57e in internal_error(char const*, int, char const*, ...) (file=0x4a53c0 "src/gdb/gdbserver/inferiors.c", line=212, fmt=0x4a539e "%s: Assertion `%s' failed.") at src/gdb/gdbserver/../common/errors.c:54 #1 0x0000000000420acf in current_process() () at src/gdb/gdbserver/inferiors.c:212 #2 0x00000000004226a0 in any_persistent_commands() () at gdb/gdbserver/mem-break.c:308 #3 0x000000000042cb43 in handle_detach(char*) (own_buf=0x6f0280 "D;62ea") at src/gdb/gdbserver/server.c:1210 #4 0x0000000000433af3 in process_serial_event() () at src/gdb/gdbserver/server.c:4055 #5 0x0000000000434878 in handle_serial_event(int, void*) (err=0, client_data=0x0) The "eliminate stop_pc" commit exposes the problem because before that commit, GDB's switch_to_thread always read the newly-selected thread's PC, and that would end up forcing GDBserver's selected thread to change accordingly as side effect. After that commit, GDB no longer reads the thread's PC, and GDBserver does not switch the thread. Fix this by removing the assumption from GDBserver. gdb/gdbserver/ChangeLog: 2018-07-11 Pedro Alves <palves@redhat.com> PR gdb/23377 * mem-break.c (any_persistent_commands): Add process_info parameter and use it instead of relying on the current process. Change return type to bool. * mem-break.h (any_persistent_commands): Add process_info parameter and change return type to bool. * server.c (handle_detach): Remove require_running_or_return call. Look up the process_info for the process we're about to detach. If not found, return back error to GDB. Adjust any_persistent_commands call to pass down a process pointer.
2018-07-11GDBserver: Fix "Cond. jump or move depends on uninit value" in x87 codePedro Alves4-46/+50
Running gdbserver under Valgrind I get: ==26925== Conditional jump or move depends on uninitialised value(s) ==26925== at 0x473E7F: i387_cache_to_xsave(regcache*, void*) (i387-fp.c:579) ==26925== by 0x46E3ED: x86_fill_xstateregset(regcache*, void*) (linux-x86-low.c:418) ==26925== by 0x45E747: regsets_store_inferior_registers(regsets_info*, regcache*) (linux-low.c:5456) ==26925== by 0x45EEF8: linux_store_registers(regcache*, int) (linux-low.c:5731) ==26925== by 0x426441: regcache_invalidate_thread(thread_info*) (regcache.c:89) ==26925== by 0x45CCAF: linux_resume_one_lwp_throw(lwp_info*, int, int, siginfo_t*) (linux-low.c:4447) ==26925== by 0x45CE2A: linux_resume_one_lwp(lwp_info*, int, int, siginfo_t*) (linux-low.c:4519) ==26925== by 0x45E17C: proceed_one_lwp(thread_info*, lwp_info*) (linux-low.c:5216) ==26925== by 0x45DC81: linux_resume_one_thread(thread_info*, bool) (linux-low.c:5031) ==26925== by 0x45DD34: linux_resume(thread_resume*, unsigned long)::{lambda(thread_info*)#2}::operator()(thread_info*) const (linux-low.c:5095) ==26925== by 0x462907: void for_each_thread<linux_resume(thread_resume*, unsigned long)::{lambda(thread_info*)#2}>(linux_resume(thread_resume*, unsigned long)::{lambda(thread_info*)#2}) (gdbthread.h:150) ==26925== by 0x45DE62: linux_resume(thread_resume*, unsigned long) (linux-low.c:5093) ==26925== ==26925== Conditional jump or move depends on uninitialised value(s) ==26925== at 0x473EBD: i387_cache_to_xsave(regcache*, void*) (i387-fp.c:586) ==26925== by 0x46E3ED: x86_fill_xstateregset(regcache*, void*) (linux-x86-low.c:418) ==26925== by 0x45E747: regsets_store_inferior_registers(regsets_info*, regcache*) (linux-low.c:5456) ==26925== by 0x45EEF8: linux_store_registers(regcache*, int) (linux-low.c:5731) ==26925== by 0x426441: regcache_invalidate_thread(thread_info*) (regcache.c:89) ==26925== by 0x45CCAF: linux_resume_one_lwp_throw(lwp_info*, int, int, siginfo_t*) (linux-low.c:4447) ==26925== by 0x45CE2A: linux_resume_one_lwp(lwp_info*, int, int, siginfo_t*) (linux-low.c:4519) ==26925== by 0x45E17C: proceed_one_lwp(thread_info*, lwp_info*) (linux-low.c:5216) ==26925== by 0x45DC81: linux_resume_one_thread(thread_info*, bool) (linux-low.c:5031) ==26925== by 0x45DD34: linux_resume(thread_resume*, unsigned long)::{lambda(thread_info*)#2}::operator()(thread_info*) const (linux-low.c:5095) ==26925== by 0x462907: void for_each_thread<linux_resume(thread_resume*, unsigned long)::{lambda(thread_info*)#2}>(linux_resume(thread_resume*, unsigned long)::{lambda(thread_info*)#2}) (gdbthread.h:150) ==26925== by 0x45DE62: linux_resume(thread_resume*, unsigned long) (linux-low.c:5093) The problem is a type/width mismatch in code like this, in gdbserver/i387-fp.c: /* Some registers are 16-bit. */ collect_register_by_name (regcache, "fctrl", &val); fp->fctrl = val; In the above code: #1 - 'val' is a 64-bit unsigned long. #2 - "fctrl" is 32-bit in the register cache, thus half of 'val' is left uninitialized by collect_register_by_name, which works with an untyped raw buffer output (i.e., void*). #3 - fp->fctrl is an unsigned short (16-bit). For some such registers we're masking off the uninitialized bits with 0xffff, but not in all cases. We end up in such a fragile situation because collect_registers_by_name works with an untyped output buffer pointer, making it easy to pass a pointer to a variable of the wrong size. Fix this by using regcache_raw_get_unsigned instead (actually a new regcache_raw_get_unsigned_by_name wrapper), which always returns a zero-extended ULONGEST register value. It ends up simplifying the i387-tdep.c code a bit, even. gdb/gdbserver/ChangeLog: 2018-07-11 Pedro Alves <palves@redhat.com> * i387-fp.c (i387_cache_to_fsave, cache_to_fxsave) (i387_cache_to_xsave): Use regcache_raw_get_unsigned_by_name instead of collect_register_by_name. * regcache.c (regcache_raw_get_unsigned_by_name): New. * regcache.h (regcache_raw_get_unsigned_by_name): New.
2018-07-11Fix PR c++/23373: GDB hangs when printing a struct with a static member of ↵Sergio Durigan Junior5-1/+35
itself This patch fixes a failure that happens when a structure has a static member whose type is the same as itself. From the bug report: Example code: struct A { static A Empty; int a; }; int main(void) { A a; return 0; } Output: (gdb) ptype/o A /* offset | size */ type = struct A { static struct A { static struct A { static struct A { static struct A { static struct A { static struct A { ... # infinite loop The problem here is that GDB is not taking into account the fact that static members inside a class/struct are not stored in the class/struct, and therefore they should not be accounted for during the display of the offsets/sizes. The fix is simple: we just check if the field we're dealing with (on c-typeprint.c:c_type_print_base_struct_union) is static, and if it is then we don't iterate over it. This patch also adds a new test for this case, and doesn't introduce any regressions. I believe it is important enough to be included in the 8.2 branch. OK? gdb/ChangeLog: 2018-07-11 Sergio Durigan Junior <sergiodj@redhat.com> PR c++/23373 * c-typeprint.c (c_type_print_base_struct_union): Don't print offsets/sizes for static members of a class/struct. gdb/testsuite/ChangeLog: 2018-07-11 Sergio Durigan Junior <sergiodj@redhat.com> PR c++/23373 * gdb.base/ptype-offsets.cc (struct static_member): New struct. (main) <stmember>: New variable. * gdb.base/ptype-offsets.exp: Add test for printing a struct with a static member in it.
2018-07-11Automatic date update in version.inGDB Administrator1-1/+1
2018-07-10Automatic date update in version.inGDB Administrator1-1/+1
2018-07-09Automatic date update in version.inGDB Administrator1-1/+1
2018-07-08Automatic date update in version.inGDB Administrator1-1/+1
2018-07-07contrib/gdb-add-index.sh -dwarf-5Jan Kratochvil2-2/+12
------------------------------------------------------------------------------ (gdb) help save gdb-index Save a gdb-index file. Usage: save gdb-index [-dwarf-5] DIRECTORY No options create one file with .gdb-index extension for pre-DWARF-5 compatible .gdb_index section. With -dwarf-5 creates two files with extension .debug_names and .debug_str for DWARF-5 .debug_names section. ------------------------------------------------------------------------------ But gdb-add-index command provided no way how to pass the -dwarf-5 option. gdb/ChangeLog 2018-07-07 Jan Kratochvil <jan.kratochvil@redhat.com> * contrib/gdb-add-index.sh ($dwarf5): New, use it.
2018-07-07Automatic date update in version.inGDB Administrator1-1/+1
2018-07-06Automatic date update in version.inGDB Administrator1-1/+1
2018-07-05Automatic date update in version.inGDB Administrator1-1/+1
2018-07-04Bump GDB version number to 8.1.90.DATE-git.Joel Brobecker3-2/+7
gdb/ChangeLog: * version.in: Set GDB version number to 8.1.90.DATE-git. * PROBLEMS: Likewise.
2018-07-04Document the GDB 8.1.90 release in gdb/ChangeLogJoel Brobecker1-0/+4
gdb/ChangeLog: GDB 8.1.90 released.
2018-07-04Set GDB version number to 8.1.90.Joel Brobecker3-2/+7
gdb/ChangeLog: * version.in: Set GDB version number to 8.1.90. * PROBLEMS: Likewise.
2018-07-04gdb/NEWS: Change "Changes since GDB 8.1" into "Changes in GDB 8.2".Joel Brobecker2-1/+5
gdb/ChangeLog: * NEWS: Change "Changes since GDB 8.1" into "Changes in GDB 8.2".
2018-07-04Set development mode to "off" by default.Joel Brobecker2-1/+5
bfd/ChangeLog: * development.sh (development): Set to false.
2018-07-04Bump version to 8.1.90.DATE-git.Joel Brobecker2-1/+6
Now that the GDB 8.2 branch has been created, we can bump the version number. gdb/ChangeLog: GDB 8.2 branch created (1b919490e8ba30bf1d6941df0ed112b0e557017e): * version.in: Bump version to 8.1.90.DATE-git.
2018-07-04Warn if /proc is not accessiblegdb-8.2-branchpointVyacheslav Barinov6-5/+45
There's a buildroot where I want to debug a binary, and I tried to connect to it from outside, but got very weird errors like architecture mismatch or protocol errors. At last, after switching on '--debug' for gdbserver I found a message 'Can't open /proc/pid/' message and suddenly found that I forgot to mount procfs in my buildroot. Make discovering the problem easier by making GDB / GDBserver warn (even without --debug) if /proc can not be accessed. Native debugging: (gdb) start Temporary breakpoint 1 at 0x400835: file test.c, line 10. Starting program: /tmp/test warning: /proc is not accessible. GDBserver/remote debugging: $ ./gdbserver :9999 ./gdbserver gdbserver: /proc is not accessible. gdb/ChangeLog: 2018-07-04 Vyacheslav Barinov <v.barinov@samsung.com> Pedro Alves <palves@redhat.com> * linux-nat.c (linux_init_ptrace): Rename to ... (linux_init_ptrace_procfs): ... this. Call linux_proc_init_warnings. (linux_nat_target::post_attach) (linux_nat_target::post_startup_inferior): Adjust. * nat/linux-procfs.c (linux_proc_init_warnings): Define function. * nat/linux-procfs.h (linux_proc_init_warnings): Declare function. gdb/gdbserver/ChangeLog: 2018-07-04 Vyacheslav Barinov <v.barinov@samsung.com> Pedro Alves <palves@redhat.com> * linux-low.c (initialize_low): Call linux_proc_init_warnings.