aboutsummaryrefslogtreecommitdiff
path: root/gdb
AgeCommit message (Collapse)AuthorFilesLines
2020-10-29Remove the exec_bfd macroTom Tromey28-120/+218
This removes the exec_bfd macro, in favor of new accessors on program_space. In one spot the accessor can't be used; but this is still a big improvement over the macro, IMO. gdb/ChangeLog 2020-10-29 Tom Tromey <tom@tromey.com> * windows-tdep.c (windows_solib_create_inferior_hook): Update. * symfile.c (reread_symbols): Update. * symfile-mem.c (add_symbol_file_from_memory_command) (add_vsyscall_page): Update. * source-cache.c (source_cache::get_plain_source_lines): Update. * solib-svr4.c (find_program_interpreter, elf_locate_base) (svr4_current_sos_direct, svr4_exec_displacement) (svr4_relocate_main_executable): Update. (svr4_iterate_over_objfiles_in_search_order): Update. * solib-frv.c (enable_break2, enable_break): Update. * solib-dsbt.c (lm_base, enable_break): Update. * solib-darwin.c (find_program_interpreter) (darwin_solib_create_inferior_hook): Update. * sol-thread.c (rw_common, ps_pdmodel): Update. * rs6000-nat.c (rs6000_nat_target::create_inferior): Update. * remote.c (compare_sections_command) (remote_target::trace_set_readonly_regions): Update. * remote-sim.c (get_sim_inferior_data) (gdbsim_target::create_inferior, gdbsim_target::create_inferior): Update. (gdbsim_target_open, gdbsim_target::files_info): Update. * exec.h (exec_bfd): Remove macro. * progspace.c (initialize_progspace): Update. * proc-service.c (ps_addr_to_core_addr, core_addr_to_ps_addr): Update. * nto-procfs.c (nto_procfs_target::post_attach) (nto_procfs_target::create_inferior): Update. * maint.c (maintenance_info_sections): Update. * linux-thread-db.c (thread_db_target::get_thread_local_address): Update. * infcmd.c (post_create_inferior): Update. * gcore.c (default_gcore_arch, default_gcore_target): Update. (objfile_find_memory_regions): Update. * exec.c (validate_exec_file, exec_file_attach) (exec_read_partial_read_only, print_section_info): Update. * corelow.c (core_target_open): Update. * corefile.c (reopen_exec_file, validate_files): Update. * arm-tdep.c (gdb_print_insn_arm): Update. * arch-utils.c (gdbarch_update_p, default_print_insn): Update. * progspace.h (struct program_space) <exec_bfd, set_exec_bfd>: New methods.
2020-10-29Remove current_target_sections macroTom Tromey5-15/+23
This removes the current_target_sections macro, replacing it with uses of the appropriate member from current_program_space. gdb/ChangeLog 2020-10-29 Tom Tromey <tom@tromey.com> * progspace.h (current_target_sections): Remove macro. * solib-svr4.c (scan_dyntag): Update. * solib-dsbt.c (scan_dyntag): Update. * exec.c (exec_target::close): Update. (add_target_sections, add_target_sections_of_objfile) (remove_target_sections, exec_target::get_section_table) (exec_target::files_info, set_section_command) (exec_set_section_address, exec_target::has_memory) (exec_target::has_memory): Update.
2020-10-29Remove exec_bfd_mtime defineTom Tromey5-4/+13
This removes the exec_bfd_mtime define, in favor of directly using the appropriate member of the current program space. gdb/ChangeLog 2020-10-29 Tom Tromey <tom@tromey.com> * source-cache.c (source_cache::get_plain_source_lines): Use current_program_space. * corefile.c (reopen_exec_file): Use current_program_space. * exec.c (exec_file_attach): Use current_program_space. * exec.h (exec_bfd_mtime): Remove.
2020-10-29Remove commented-out code from gcore.cTom Tromey2-20/+6
I found some code in gcore.c that has been commented out since d3420b2fce5e (Mark Kettenis 2003-09-04 166) #if 1 /* See if this even matters... */ This patch deletes this entire function, because the body was reduced to just "return 0". gdb/ChangeLog 2020-10-29 Tom Tromey <tom@tromey.com> * gcore.c (default_gcore_mach): Remove. (create_gcore_bfd): Update.
2020-10-29Change exec_close to be a method on program_spaceTom Tromey5-28/+35
exec_close uses the current program space, so it seemed cleaner to change it to be a method on program_space. This patch makes this change. gdb/ChangeLog 2020-10-29 Tom Tromey <tom@tromey.com> * progspace.c (program_space::exec_close): New method, from exec_close in exec.c. * exec.c (exec_close): Move to progspace.c. (exec_target::close, exec_file_attach): Update. * progspace.h (struct program_space) <exec_close>: Declare method.
2020-10-29Remove exec_filename macroTom Tromey8-20/+34
This removes the exec_filename macro, replacing it with uses of the member of current_program_space. This also renames that member, and changes it to be a unique pointer. gdb/ChangeLog 2020-10-29 Tom Tromey <tom@tromey.com> * progspace.h (struct program_space) <exec_filename>: Rename from pspace_exec_filename. Now a unique_xmalloc_ptr. * inferior.c (print_selected_inferior): Update. (print_inferior): Update. * mi/mi-main.c (print_one_inferior): Update. * exec.h (exec_filename): Remove macro. * corefile.c (get_exec_file): Update. * exec.c (exec_close): Update. (exec_file_attach): Update. * progspace.c (clone_program_space): Update. (print_program_space): Update.
2020-10-29Add target_section constructorTom Tromey4-18/+23
This adds a constructor to target_section, simplifying the code that creates instances of this. gdb/ChangeLog 2020-10-29 Tom Tromey <tom@tromey.com> * target-section.h (struct target_section): Add constructor. * exec.c (build_section_table, add_target_sections_of_objfile): Update. * corelow.c (core_target::build_file_mappings): Update.
2020-10-29gdb: restore thread after detaching or killing an inferiorTankut Baris Aktemur4-0/+18
The "detach inferiors N" command causes the current inferior to switch. E.g.: $ gdb a.out Reading symbols from a.out... (gdb) start ... (gdb) add-inferior [New inferior 2] Added inferior 2 on connection 1 (native) (gdb) inferior 2 [Switching to inferior 2 [<null>] (<noexec>)] (gdb) info inferiors Num Description Connection Executable 1 process 18242 1 (native) /path/to/a.out * 2 <null> 1 (native) (gdb) detach inferiors 1 Detaching from program: /path/to/a.out, process 18242 [Inferior 1 (process 18242) detached] (gdb) info inferiors Num Description Connection Executable * 1 <null> /path/to/a.out 2 <null> 1 (native) (gdb) The same switch happens with the "kill inferiors N" command. Prevent it by restoring the current thread. gdb/ChangeLog: 2020-10-29 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> PR gdb/19318 * inferior.c (detach_inferior_command): Restore the current thread. (kill_inferior_command): Ditto. gdb/testsuite/ChangeLog: 2020-10-29 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> * gdb.base/kill-detach-inferiors-cmd.exp: Check that 'kill inferiors' and 'detach inferiors' do not change the current inferior.
2020-10-29[gdb/testsuite] Fix DUPLICATEs in gdb.threads/tls.expTom de Vries2-2/+11
With test-case gdb.threads/tls.exp, we get these: ... DUPLICATE: gdb.threads/tls.exp: selected thread: 4 DUPLICATE: gdb.threads/tls.exp: selected thread: 2 DUPLICATE: gdb.threads/tls.exp: selected thread: 3 ... Fix these using with_test_prefix. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-10-29 Tom de Vries <tdevries@suse.de> * gdb.threads/tls.exp: Fix DUPLICATEs.
2020-10-28[gdb/testsuite] Fix gdb.python/py-symbol.exp with -readnowTom de Vries2-4/+32
When running test-case gdb.python/py-symbol.exp with target board readnow, we get: ... FAIL: gdb.python/py-symbol.exp: print line number of rr FAIL: gdb.python/py-symbol.exp: print value of rr ... These are FAILs due to PR25857. Mark these FAILs as KFAILs. gdb/testsuite/ChangeLog: 2020-10-28 Tom de Vries <tdevries@suse.de> * gdb.python/py-symbol.exp: Add KFAILs for -readnow.
2020-10-28[gdb/testsuite] Fix re-read FAILs with -readnowTom de Vries3-0/+21
When running the testsuite with target board readnow, we run into: ... FAIL: gdb.ada/exec_changed.exp: start second FAIL: gdb.ada/exec_changed.exp: start just first FAIL: gdb.base/reread.exp: opts= "" "" : run to foo() second time FAIL: gdb.base/reread.exp: opts= "" "" : second pass: run to foo() second time FAIL: gdb.base/reread.exp: opts= "-fPIE" "ldflags=-pie" : \ run to foo() second time FAIL: gdb.base/reread.exp: opts= "-fPIE" "ldflags=-pie" : second pass: \ run to foo() second time ... These are FAILs due to PR26800. Mark these as KFAILs. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-10-28 Tom de Vries <tdevries@suse.de> * gdb.ada/exec_changed.exp: Add KFAILs for -readnow. * gdb.base/reread.exp: Same.
2020-10-28[gdb/testsuite] Fix gdb.rust/traits.exp with -readnowTom de Vries3-2/+20
With test-case gdb.rust/traits.exp and target board readnow we get: ... FAIL: gdb.rust/traits.exp: print *td FAIL: gdb.rust/traits.exp: print *tu ... Mark these FAILs as KFAILs. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-10-28 Tom de Vries <tdevries@suse.de> * lib/gdb.exp (readnow): Handle arg. * gdb.rust/traits.exp: Add KFAILs for -readnow.
2020-10-28[gdb/testsuite] Fix gdb.base/relocate.exp with -readnowTom de Vries2-4/+9
With test-case gdb.base/relocate.exp and target board readnow, we get: ... FAIL: gdb.base/relocate.exp: symbol-file with offset FAIL: gdb.base/relocate.exp: add-symbol-file with offset FAIL: gdb.base/relocate.exp: add-symbol-file with offset, text address given FAIL: gdb.base/relocate.exp: add-symbol-file with offset, data address given ... Fix these FAILs by updating the regexps for -readnow. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-10-28 Tom de Vries <tdevries@suse.de> * gdb.base/relocate.exp: Update regexp for -readnow.
2020-10-28[gdb/testsuite] Fix gdb.dwarf2/dw2-error.exp with -readnowTom de Vries2-0/+14
With test-case gdb.dwarf2/dw2-error.exp and target board readnow, we get: ... FAIL: gdb.dwarf2/dw2-error.exp: break -q main ... In the normal case, after running into the dwarf error, the minimal symbols are still available, but with -readnow this is not the case. Mark the FAIL as KFAIL. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-10-28 Tom de Vries <tdevries@suse.de> * gdb.dwarf2/dw2-error.exp: Mark failure break in main as known with -readnow.
2020-10-28[gdb/symtab] Fix language of frame without debug infoTom de Vries5-0/+143
On openSUSE Leap 15.2, I run into this FAIL with target board readnow and test-case gdb.dwarf2/dw2-align.exp: ... (gdb) set lang c++^M Warning: the current language does not match this frame.^M (gdb) FAIL: gdb.dwarf2/dw2-align.exp: set lang c++ ... Adding some extra debugging shows that the current language differs without and with readnow: ... Breakpoint 1, 0x00000000004004ab in main ()^M (gdb) show lang^M -The current source language is "auto; currently c".^M +The current source language is "auto; currently asm".^M ... This is explained by find_pc_compunit_symtab (0x4004ab) called from select_frame, which: - without readnow: returns NULL, and - with readnow: returns the symtab for the CU crtn.S, wich has language "MIPS assembler". In the former case, the symtab for crtn.S is not expanded, and find_pc_compunit_symtab hits the default NULL return. In the latter case, the symtab for crtn.S is expanded, and the "best match" loop in find_pc_compunit_symtab returns that symtab as its best match. The GLOBAL_BLOCK for crtn.S has these outer limits of the address range: ... (gdb) p /x b.startaddr $6 = 0x4003c2 (gdb) p /x b.endaddr $7 = 0x40053d ... and 0x4004ab indeed fits in that range, which explains why the CU is considered a match. However, the actual address ranges for the CU are: ... 00000040 ffffffffffffffff 0000000000000000 (base address) 00000040 00000000004003c2 00000000004003c7 00000040 0000000000400538 000000000040053d 00000040 <End of list> ... which confirms that the CU should not be considered a match. The problem is that the "best match" loop is based on the assumption that a symtab with a better match will be found, but in this case we don't find a better match because there's no debug info describing main. Fix this by preferring to use the addres map in the "best match" loop, which will accurately tell us that addrmap_find (bv.map, 0x4004ab) == NULL. Tested on x86_64-linux (that is, openSUSE Leap 15.2), with and without readnow. In the case of a readnow run, brings down the number of unexpected failures from 66 to 38. The FAIL does not reproduce on f.i. Ubuntu 18.04.5, because there the exec does not contain debug info for crtn.S. The dwarf assembly test-case mimics the scenario described above, and reproduces the FAIL with and without -readnow, for both mentioned OS configurations. Also fixes PR25980 - "Overlapping Dwarf Compile Units with non-overlapping subranges gives incorrect line information". gdb/ChangeLog: 2020-10-28 Tom de Vries <tdevries@suse.de> PR symtab/26772 * symtab.c (find_pc_sect_compunit_symtab): In case there's an address map, check it in the "best match" loop. gdb/testsuite/ChangeLog: 2020-10-28 Tom de Vries <tdevries@suse.de> PR symtab/26772 * gdb.dwarf2/dw2-ranges-overlap.c: New test. * gdb.dwarf2/dw2-ranges-overlap.exp: New file.
2020-10-28[gdb/testsuite] Fix gdb.cp/nsalias.exp with -readnowTom de Vries3-8/+32
When running test-case gdb.cp/nsalias.exp with target board readnow, we get: ... FAIL: gdb.cp/nsalias.exp: complaint for too many recursively imported \ declarations ... The complaint is not detected, because: - the complaint is triggered during the file command instead of during "print N100::x" - the "set complaints 1" is not effective because it's issued after the file command Fix the FAIL by setting the complaints limit earlier, and detecting the complaint also during the file command. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-10-28 Tom de Vries <tdevries@suse.de> * lib/gdb.exp (gdb_file_cmd): Set gdb_file_cmd_msg. * gdb.cp/nsalias.exp: Set complaints limit before file cmd. Expect complaint during file command for -readnow.
2020-10-28[gdb/testsuite] Fix typo in gdb.cp/nsalias.expTom de Vries2-1/+5
Fix typo "compaint" -> "complaint". gdb/testsuite/ChangeLog: 2020-10-28 Tom de Vries <tdevries@suse.de> * gdb.cp/nsalias.exp: Fix typo in test name.
2020-10-28[gdb/testsuite] Fix gdb.dwarf2/dw2-filename.exp with -readnowTom de Vries2-1/+5
When running test-case gdb.dwarf2/dw2-filename.exp with target board -readnow, we run into: ... FAIL: gdb.dwarf2/dw2-filename.exp: info sources ... The normal output is: ... (gdb) info sources^M Source files for which symbols have been read in:^M ^M Source files for which symbols will be read in on demand:^M ^M src/gdb/testsuite/gdb.dwarf2/file1.txt^M (gdb) ... but with -readnow file1.txt appears in the "Source files for which symbols have been read in" catagory instead, as expected. Fix the FAIL by making the regexp match the -readnow output. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-10-28 Tom de Vries <tdevries@suse.de> * gdb.dwarf2/dw2-filename.exp: Update regexp for -readnow.
2020-10-28[gdb/testsuite] Fix gdb.dwarf2/dw2-stack-boundary.exp with -readnowTom de Vries2-1/+30
When running test-case gdb.dwarf2/dw2-stack-boundary.exp with target board readnow, we run into: ... FAIL: gdb.dwarf2/dw2-stack-boundary.exp: check partial symtab errors ... The cause for the FAIL is that these complaints are not there: ... During symbol reading: location description stack underflow^M During symbol reading: location description stack overflow^M ... Fix this by KFAILing the complaints for -readnow. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-10-28 Tom de Vries <tdevries@suse.de> * gdb.dwarf2/dw2-stack-boundary.exp: KFAILing the complaints for -readnow.
2020-10-27[gdb/testsuite] Fix gdb.base/multi-forks.exp timeout with -readnowTom de Vries2-1/+15
When running test-case gdb.base/multi-forks.exp with target board readnow, we run into: ... FAIL: gdb.base/multi-forks.exp: run to exit 1 (timeout) ... Fix this by using exp_continue. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-10-27 Tom de Vries <tdevries@suse.de> * gdb.base/multi-forks.exp: Use exp_continue to fix timeout.
2020-10-27[gdb/testsuite] Fix DUPLICATEs in gdb.base/multi-forks.expTom de Vries1-20/+26
When running test-case gdb.base/multi-forks.exp I get: ... DUPLICATE: gdb.base/multi-forks.exp: run to exit 2 DUPLICATE: gdb.base/multi-forks.exp: run to exit 2 ... Fix these by using test_with_prefix. Tested on x86_64-linux.
2020-10-27[gdb/testsuite] Fix gdb.base/maint.exp FAILs with -readnowTom de Vries2-5/+24
When running test-case gdb.base/maint.exp with target board readnow, we run into: ... FAIL: gdb.base/maint.exp: mt expand-symtabs FAIL: gdb.base/maint.exp: maint print objfiles: psymtabs FAIL: gdb.base/maint.exp: maint print psymbols -source FAIL: gdb.base/maint.exp: maint print psymbols -pc FAIL: gdb.base/maint.exp: maint info line-table with filename of symtab that \ is not currently expanded ... When using -readnow: - there are no partial symtabs - all symtabs are expanded at symbol load time and these differences from normal behaviour cause the FAILs. Update the tests for -readnow. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-10-27 Tom de Vries <tdevries@suse.de> * gdb.base/maint.exp: Update for -readnow.
2020-10-27[gdb/testsuite] Fix gdb.cp/psymtab-parameter.exp with -readnowTom de Vries2-3/+9
When running test-case gdb.cp/psymtab-parameter.exp with target board readnow, we run into: ... FAIL: gdb.cp/psymtab-parameter.exp: maintenance info symtabs ... The FAIL is expected, as mentioned in the comment: ... # The goal is to keep the CU (Compilation Unit) unexpanded. It would be # rather XFAIL than FAIL here. For example -readnow breaks it. gdb_test_no_output "maintenance info symtabs" ... Fix the FAIL by skipping the command for -readnow. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-10-27 Tom de Vries <tdevries@suse.de> * gdb.cp/psymtab-parameter.exp: Don't expect unexpanded CU for -readnow.
2020-10-27Fix gdb.python/py-format-string.exp with ClangGary Benson2-2/+8
GDB includes the virtual table pointer when formatting polymorphic C++ objects for printing, but GCC and Clang name these differently: GCC emits a DW_AT_name of "_vptr.Base" when describing the virtual table pointer of a type derived from type "Base", whereas Clang will emit "_vptr$Base" in this situation. This commit fixes a testcase which failed because of this. gdb/testsuite/ChangeLog: * gdb.python/py-format-string.exp (test_deref_refs): Treat "_vptr$Base" as correct, in addition to "_vptr.Base". (test_mixed): Likewise.
2020-10-27Add skip_fortran_tests to two Fortran testcasesGary Benson3-2/+11
This commit adds missing skip_fortran_tests checks to two Fortran testcases that did not have it. It also fixes a copy-paste error in a comment. gdb/testsuite/ChangeLog: * gdb.mi/mi-fortran-modules.exp: Check skip_fortran_tests. * gdb.mi/mi-vla-fortran.exp: Likewise. Also fix a comment.
2020-10-27gdb: remove unused includes in m32c-tdep.cSimon Marchi2-8/+4
include-what-you-use says: ../../../src/binutils-gdb/gdb/m32c-tdep.c should remove these lines: - #include "dis-asm.h" // lines 24-24 - #include "dwarf2/expr.h" // lines 31-31 - #include "dwarf2/frame.h" // lines 30-30 - #include "elf-bfd.h" // lines 21-21 - #include "elf/m32c.h" // lines 22-22 - #include "target.h" // lines 37-37 - struct m32c_reg; // lines 45-45 That looks right, remove them. Tested by rebuilding. gdb/ChangeLog: * m32c-tdep.c: Remove unused includes. Change-Id: I28b41795f3bcc5406488dbf272c9e86fd5781b6b
2020-10-27gdb: remove unused includes in xtensa-tdep.cSimon Marchi2-9/+4
include-what-you-use says that these includes are not necessary in xtensa-tdep.c: ../../../src/binutils-gdb/gdb/xtensa-tdep.c should remove these lines: - #include "dis-asm.h" // lines 29-29 - #include "dummy-frame.h" // lines 36-36 - #include "dwarf2.h" // lines 37-37 - #include "dwarf2/loc.h" // lines 39-39 - #include "inferior.h" // lines 30-30 - #include "objfiles.h" // lines 25-25 - #include "remote.h" // lines 45-45 - #include "serial.h" // lines 46-46 - #include "symfile.h" // lines 24-24 That looks about right, so remove them. Tested by re-building. gdb/ChangeLog: * xtensa-tdep.c: Remove includes. Change-Id: I9774ec59a68dd94e06967713d2f271b1760f6e6a
2020-10-27gdb/breakpoint: use gdb::option for the '-force' flagTankut Baris Aktemur4-20/+85
Use the gdb::option framework for the '-force' flag of the 'condition' command. This gives tab-completion ability for the flag. gdb/ChangeLog: 2020-10-27 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> * breakpoint.c (struct condition_command_opts): New struct. (condition_command_option_defs): New static global. (make_condition_command_options_def_group): New function. (condition_completer): Update to consider the '-force' flag. (condition_command): Use gdb::option for the '-force' flag. gdb/testsuite/ChangeLog: 2020-10-27 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> * gdb.base/condbreak.exp: Update the completion tests to consider the '-force' flag.
2020-10-27[gdb/testsuite] Fix section matching in find_pc_sect_compunit_symtabTom de Vries4-6/+43
When running test-case gdb.base/list-ambiguous.exp with target board readnow, we run into: ... FAIL: gdb.base/list-ambiguous.exp: list ambiguous_fun ... The test-case contains two static functions ambiguous_fun, one in list-ambiguous0.c and one in list-ambiguous1.c. The list command is supposed to show both, but only the one from list-ambiguous0.c is shown. This is due to the section check in find_pc_sect_compunit_symtab. It checks whether the candidate compunit_symtab contains a symbol that has the required section. This check is only done for GLOBAL_BLOCK symbols. The check succeeds for the compunit_symtab for list-ambiguous0.c, because it contains main, but it fails for list-ambiguous0.c because it has no global symbols. Fix this by extending the section check to STATIC_BLOCK symbols. Tested on x86_64-linux. gdb/ChangeLog: 2020-10-27 Tom de Vries <tdevries@suse.de> * symtab.c (find_pc_sect_compunit_symtab): Include STATIC_BLOCK symbols in section check. gdb/testsuite/ChangeLog: 2020-10-27 Tom de Vries <tdevries@suse.de> * gdb.base/list-ambiguous-readnow.exp: New file.
2020-10-27[gdb/symtab] Use early continue in find_pc_sect_compunit_symtabTom de Vries2-44/+54
Function find_pc_sect_compunit_symtab contains a loop: ... for (compunit_symtab *cust : obj_file->compunits ()) { ... if (...) { /* Lots of code. */ } } ... Reduce indentation level and improve readability by using early continue. Tested on x86_64-linux. gdb/ChangeLog: 2020-10-27 Tom de Vries <tdevries@suse.de> * symtab.c (find_pc_sect_compunit_symtab): Use early continue.
2020-10-27gdb/breakpoint: add flags to 'condition' and 'break' commands to force conditionTankut Baris Aktemur15-21/+189
The previous patch made it possible to define a condition if it's valid at some locations. If the condition is invalid at all of the locations, it's rejected. However, there may be cases where the user knows the condition *will* be valid at a location in the future, e.g. due to a shared library load. To make it possible that such condition can be defined, this patch adds an optional '-force' flag to the 'condition' command, and, respectively, a '-force-condition' flag to the 'break'command. When the force flag is passed, the condition is not rejected even when it is invalid for all the current locations (note that all the locations would be internally disabled in this case). For instance: (gdb) break test.c:5 Breakpoint 1 at 0x1155: file test.c, line 5. (gdb) cond 1 foo == 42 No symbol "foo" in current context. Defining the condition was not possible because 'foo' is not available. The user can override this behavior with the '-force' flag: (gdb) cond -force 1 foo == 42 warning: failed to validate condition at location 1.1, disabling: No symbol "foo" in current context. (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y <MULTIPLE> stop only if foo == 42 1.1 N 0x0000000000001155 in main at test.c:5 Now the condition is accepted, but the location is automatically disabled. If a future location has a context in which 'foo' is available, that location would be enabled. For the 'break' command, -force-condition has the same result: (gdb) break test.c:5 -force-condition if foo == 42 warning: failed to validate condition at location 0x1169, disabling: No symbol "foo" in current context. Breakpoint 1 at 0x1169: file test.c, line 5. gdb/ChangeLog: 2020-10-27 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> * breakpoint.h (set_breakpoint_condition): Add a new bool parameter. * breakpoint.c: Update the help text of the 'condition' and 'break' commands. (set_breakpoint_condition): Take a new bool parameter to control whether condition definition should be forced even when the condition expression is invalid in all of the current locations. (condition_command): Update the call to 'set_breakpoint_condition'. (find_condition_and_thread): Take the "-force-condition" flag into account. * linespec.c (linespec_keywords): Add "-force-condition" as an element. (FORCE_KEYWORD_INDEX): New #define. (linespec_lexer_lex_keyword): Update to consider "-force-condition" as a keyword. * ada-lang.c (create_ada_exception_catchpoint): Ditto. * guile/scm-breakpoint.c (gdbscm_set_breakpoint_condition_x): Ditto. * python/py-breakpoint.c (bppy_set_condition): Ditto. * NEWS: Mention the changes to the 'break' and 'condition' commands. gdb/testsuite/ChangeLog: 2020-10-27 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> * gdb.base/condbreak-multi-context.exp: Expand to test forcing the condition. * gdb.linespec/cpcompletion.exp: Update to consider the '-force-condition' keyword. * gdb.linespec/explicit.exp: Ditto. * lib/completion-support.exp: Ditto. gdb/doc/ChangeLog: 2020-10-27 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> * gdb.texinfo (Set Breaks): Document the '-force-condition' flag of the 'break'command. * gdb.texinfo (Conditions): Document the '-force' flag of the 'condition' command.
2020-10-27gdb/breakpoint: disable a bp location if condition is invalid at that locationTankut Baris Aktemur8-50/+548
Currently, for a conditional breakpoint, GDB checks if the condition can be evaluated in the context of the first symtab and line (SAL). In case of an error, defining the conditional breakpoint is aborted. This prevents having a conditional breakpoint whose condition may actually be meaningful for some of the location contexts. This patch makes it possible to define conditional BPs by checking all location contexts. If the condition is meaningful for even one context, the breakpoint is defined. The locations for which the condition gives errors are disabled. The bp_location struct is introduced a new field, 'disabled_by_cond'. This field denotes whether the location is disabled automatically because the condition was non-evaluatable. Disabled-by-cond locations cannot be enabled by the user. But locations that are not disabled-by-cond can be enabled/disabled by the user manually as before. For a concrete example, consider 3 contexts of a function 'func'. class Base { public: int b = 20; void func () {} }; class A : public Base { public: int a = 10; void func () {} }; class C : public Base { public: int c = 30; void func () {} }; Note that * the variable 'a' is defined only in the context of A::func. * the variable 'c' is defined only in the context of C::func. * the variable 'b' is defined in all the three contexts. With the existing GDB, it's not possible to define a conditional breakpoint at 'func' if the condition refers to 'a' or 'c': (gdb) break func if a == 10 No symbol "a" in current context. (gdb) break func if c == 30 No symbol "c" in current context. (gdb) info breakpoints No breakpoints or watchpoints. With this patch, it becomes possible: (gdb) break func if a == 10 warning: failed to validate condition at location 1, disabling: No symbol "a" in current context. warning: failed to validate condition at location 3, disabling: No symbol "a" in current context. Breakpoint 1 at 0x11b6: func. (3 locations) (gdb) break func if c == 30 Note: breakpoint 1 also set at pc 0x11ce. Note: breakpoint 1 also set at pc 0x11c2. Note: breakpoint 1 also set at pc 0x11b6. warning: failed to validate condition at location 1, disabling: No symbol "c" in current context. warning: failed to validate condition at location 2, disabling: No symbol "c" in current context. Breakpoint 2 at 0x11b6: func. (3 locations) (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y <MULTIPLE> stop only if a == 10 1.1 N* 0x00000000000011b6 in Base::func() at condbreak-multi-context.cc:23 1.2 y 0x00000000000011c2 in A::func() at condbreak-multi-context.cc:31 1.3 N* 0x00000000000011ce in C::func() at condbreak-multi-context.cc:39 2 breakpoint keep y <MULTIPLE> stop only if c == 30 2.1 N* 0x00000000000011b6 in Base::func() at condbreak-multi-context.cc:23 2.2 N* 0x00000000000011c2 in A::func() at condbreak-multi-context.cc:31 2.3 y 0x00000000000011ce in C::func() at condbreak-multi-context.cc:39 (*): Breakpoint condition is invalid at this location. Here, uppercase 'N' denotes that the location is disabled because of the invalid condition, as mentioned with a footnote in the legend of the table. Locations that are disabled by the user are still denoted with lowercase 'n'. Executing the code hits the breakpoints 1.2 and 2.3 as expected. Defining a condition on an unconditional breakpoint gives the same behavior above: (gdb) break func Breakpoint 1 at 0x11b6: func. (3 locations) (gdb) cond 1 a == 10 warning: failed to validate condition at location 1.1, disabling: No symbol "a" in current context. warning: failed to validate condition at location 1.3, disabling: No symbol "a" in current context. (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y <MULTIPLE> stop only if a == 10 1.1 N* 0x00000000000011b6 in Base::func() at condbreak-multi-context.cc:23 1.2 y 0x00000000000011c2 in A::func() at condbreak-multi-context.cc:31 1.3 N* 0x00000000000011ce in C::func() at condbreak-multi-context.cc:39 (*): Breakpoint condition is invalid at this location. Locations that are disabled because of a condition cannot be enabled by the user: ... (gdb) enable 1.1 Breakpoint 1's condition is invalid at location 1, cannot enable. Resetting the condition enables the locations back: ... (gdb) cond 1 Breakpoint 1's condition is now valid at location 1, enabling. Breakpoint 1's condition is now valid at location 3, enabling. Breakpoint 1 now unconditional. (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y <MULTIPLE> 1.1 y 0x00000000000011b6 in Base::func() at condbreak-multi-context.cc:23 1.2 y 0x00000000000011c2 in A::func() at condbreak-multi-context.cc:31 1.3 y 0x00000000000011ce in C::func() at condbreak-multi-context.cc:39 If a location is disabled by the user, a condition can still be defined but the location will remain disabled even if the condition is meaningful for the disabled location: ... (gdb) disable 1.2 (gdb) cond 1 a == 10 warning: failed to validate condition at location 1.1, disabling: No symbol "a" in current context. warning: failed to validate condition at location 1.3, disabling: No symbol "a" in current context. (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y <MULTIPLE> stop only if a == 10 1.1 N* 0x00000000000011b6 in Base::func() at condbreak-multi-context.cc:23 1.2 n 0x00000000000011c2 in A::func() at condbreak-multi-context.cc:31 1.3 N* 0x00000000000011ce in C::func() at condbreak-multi-context.cc:39 (*): Breakpoint condition is invalid at this location. The condition of a breakpoint can be changed. Locations' enable/disable states are updated accordingly. ... (gdb) cond 1 c == 30 warning: failed to validate condition at location 1.1, disabling: No symbol "c" in current context. Breakpoint 1's condition is now valid at location 3, enabling. (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y <MULTIPLE> stop only if c == 30 1.1 N* 0x00000000000011b6 in Base::func() at condbreak-multi-context.cc:23 1.2 N* 0x00000000000011c2 in A::func() at condbreak-multi-context.cc:31 1.3 y 0x00000000000011ce in C::func() at condbreak-multi-context.cc:39 (*): Breakpoint condition is invalid at this location. (gdb) cond 1 b == 20 Breakpoint 1's condition is now valid at location 1, enabling. (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y <MULTIPLE> stop only if b == 20 1.1 y 0x00000000000011b6 in Base::func() at condbreak-multi-context.cc:23 1.2 n 0x00000000000011c2 in A::func() at condbreak-multi-context.cc:31 1.3 y 0x00000000000011ce in C::func() at condbreak-multi-context.cc:39 # Note that location 1.2 was disabled by the user previously. If the condition expression is bad for all the locations, it will be rejected. (gdb) cond 1 garbage No symbol "garbage" in current context. For conditions that are invalid or valid for all the locations of a breakpoint, the existing behavior is preserved. Regression-tested on X86_64 Linux. gdb/ChangeLog: 2020-10-27 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> * breakpoint.h (class bp_location) <disabled_by_cond>: New field. * breakpoint.c (set_breakpoint_location_condition): New function. (set_breakpoint_condition): Disable a breakpoint location if parsing the condition string gives an error. (should_be_inserted): Update to consider the 'disabled_by_cond' field. (build_target_condition_list): Ditto. (build_target_command_list): Ditto. (build_bpstat_chain): Ditto. (print_one_breakpoint_location): Ditto. (print_one_breakpoint): Ditto. (breakpoint_1): Ditto. (bp_location::bp_location): Ditto. (locations_are_equal): Ditto. (update_breakpoint_locations): Ditto. (enable_disable_bp_num_loc): Ditto. (init_breakpoint_sal): Use set_breakpoint_location_condition. (find_condition_and_thread_for_sals): New static function. (create_breakpoint): Call find_condition_and_thread_for_sals. (location_to_sals): Call find_condition_and_thread_for_sals instead of find_condition_and_thread. gdb/testsuite/ChangeLog: 2020-10-27 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> * gdb.base/condbreak-multi-context.cc: New file. * gdb.base/condbreak-multi-context.exp: New file. gdb/doc/ChangeLog: 2020-10-27 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> * gdb.texinfo (Set Breaks): Document disabling of breakpoint locations for which the breakpoint condition is invalid.
2020-10-26Fix some minor bugs in test suite command loggingTom Tromey3-2/+18
I noticed that the test suite command logging would create a file like "gdb.cmd.-1". I tracked this down to a substraction in standard_output_file_with_gdb_instance. Then, I saw that the .in file was not created for MI. This is fixed by adding a call to default_mi_gdb_start. Finally, commands might not end up in the .in file in some cases. For me this happened because the test took a long time, so I got impatient and killed it. Flushing the file after each write seemed like a good thing to do here. gdb/testsuite/ChangeLog 2020-10-26 Tom Tromey <tom@tromey.com> * lib/mi-support.exp (default_mi_gdb_start): Call gdb_stdin_log_init. * lib/gdb.exp (standard_output_file_with_gdb_instance): Don't subtract one from gdb_instances. (gdb_stdin_log_write): Flush in_file.
2020-10-26[gdb/symtab] Read CU base address for enqueued CUTom de Vries4-0/+123
Consider the test-case contained in this patch. It consists of two CUs: - cu1, containing a DW_TAG_variable DIE foo - cu2, containing a DW_TAG_base_type DIE int where the variable foo has type int, in other words, there's an inter-CU reference. When expanding the symtab for cu1, expansion of the symtab for cu2 is enqueued, and later processed by process_full_comp_unit. However, processing of .debug_ranges fails because the range is specified relative to a base address which is considered not to be present because !cu->base_address.has_value (), and we run into this case in dwarf2_ranges_process: ... if (!base.has_value ()) { /* We have no valid base address for the ranges data. */ complaint (_("Invalid .debug_ranges data (no base address)")); return 0; } ... Fix this in process_full_comp_unit by setting cu->base_address. Tested on x86_64-linux. gdb/ChangeLog: 2020-10-26 Tom de Vries <tdevries@suse.de> * dwarf2/read.c (process_full_comp_unit): Call dwarf2_find_base_address. gdb/testsuite/ChangeLog: 2020-10-26 Tom de Vries <tdevries@suse.de> * gdb.dwarf2/enqueued-cu-base-addr.exp: New file.
2020-10-26Don't inherit range-type signed-ness from underlying typeTom Tromey7-1/+141
A recent commit changed gdb to inherit the signed-ness of a range type from its underlying type: commit cfabbd351a174406fd5aa063303f5c8bf9266bbc Author: Tom Tromey <tom@tromey.com> Date: Sat Oct 17 11:41:59 2020 -0600 Make range types inherit signed-ness from base type This passed testing -- but unfortunately, additional testing at AdaCore showed that this change was incorrect. GNAT, at least, can emit an unsigned range type whose underlying type is signed. This patch reverts the code change from the above. I chose not to reintroduce the FIXME comments, because now we know that they are incorrect. Instead, this patch also adds a comment to create_range_type. A new test case is included as well. 2020-10-26 Tom Tromey <tromey@adacore.com> * gdbtypes.c (create_range_type): Revert previous patch. Add comment. gdb/testsuite/ChangeLog 2020-10-26 Tom Tromey <tromey@adacore.com> * gdb.ada/unsigned_range/foo.adb: New file. * gdb.ada/unsigned_range/pack.adb: New file. * gdb.ada/unsigned_range/pack.ads: New file. * gdb.ada/unsigned_range.exp: New file.
2020-10-26gdb::handle_eintr, remove need to specify return typePedro Alves2-9/+7
This eliminates the need to specify the return type when using handle_eintr. We let the compiler deduce it for us. Also, use lowercase for function parameter names. Uppercase should only be used on template parameters. gdb/ChangeLog: * nat/linux-waitpid.c: Include "gdbsupport/eintr.h". (my_waitpid): Use gdb::handle_eintr. gdbserver/ChangeLog: * netbsd-low.cc (netbsd_waitpid, netbsd_process_target::kill) (netbsd_qxfer_libraries_svr4): Use gdb::handle_eintr without explicit type. gdbsupport/ChangeLog: * eintr.h (handle_eintr): Replace Ret template parameter with ErrorValType. Use it as type of the failure value. Deduce the function's return type using decltype. Use lowercase for function parameter names.
2020-10-26[gdb/testsuite] Prevent pagination in GDB_INTERNALFLAGSTom de Vries2-1/+11
When running test-case gdb.base/corefile.exp with target board readnow, we run into: ... Reading symbols from outputs/gdb.base/corefile/corefile...^M Expanding full symbols from outputs/gdb.base/corefile/corefile...^M [New LWP 2293]^M Core was generated by `outputs/gdb.base/corefile/co'.^M Program terminated with signal SIGABRT, Aborted.^M --Type <RET> for more, q to quit, c to continue without paging--\ FAIL: gdb.base/corefile.exp: (timeout) starting with -core ... In commit bd447abb24 "Make gdb.base/corefile.exp work on terminals with few rows", pagination (in the same test-case) is prevented using: ... set stty_init "rows 25 cols 80" ... but this doesn't work in our case because using -readnow adds an extra line "Expanding full symbols". The test passes when increasing rows to 26. However, increasing the rows by some n only fixes the problem for n lines, and things will break again if somehow we end up with n + 1 lines. Instead, fix this by setting heigth and width in INTERNAL_GDBFLAGS. This solution was not chosen in commit bd447abb24 because it doesn't handle pagination due to the introduction text. But it does handle the pagination due to the extra "Expanding full symbols", and any other line printed during and after file loading. Tested on x86_64-linux, with and without readnow. With -readnow, fixes timeout FAILs in gdb.base/corefile.exp and gdb.base/reread-readsym.exp. gdb/testsuite/ChangeLog: 2020-10-26 Tom de Vries <tdevries@suse.de> * lib/gdb.exp (INTERNAL_GDBFLAGS): Set heigth and width.
2020-10-26[gdb/testsuite] Add missing ranges base in dw2-objfile-overlap-*.STom de Vries3-0/+12
When doing a gdb testsuite run with this trigger patch: ... @@ -14454,6 +14454,7 @@ dwarf2_ranges_process if (!base.has_value ()) { + gdb_assert (false); /* We have no valid base address for the ranges data. */ complaint (_("Invalid .debug_ranges data (no base address)")); ... we run into the assert with test-case gdb.dwarf2/dw2-objfile-overlap.exp. Fix this by adding the missing .debug_ranges base in gdb.dwarf2/dw2-objfile-overlap-*.S. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-10-26 Tom de Vries <tdevries@suse.de> * gdb.dwarf2/dw2-objfile-overlap-inner.S: Specify default base address for CU. * gdb.dwarf2/dw2-objfile-overlap-outer.S: Same.
2020-10-25gdb: move ptrace.m4 to gdbsupportSimon Marchi3-91/+6
ptrace.m4, providing the GDB_AC_PTRACE autoconf macro, is used by gdb, gdbserver and gdbsupport. I think it would make sense to move it to gdbsupport. gdb/ChangeLog: * acinclude.m4: Update ptrace.m4 path. * ptrace.m4: Moved to gdbsupport. gdbserver/ChangeLog: * acinclude.m4: Update ptrace.m4 path. gdbsupport/ChangeLog: * Makefile.in: Re-generate. * acinclude.m4: Update ptrace.m4 path. * ptrace.m4: Move here. Change-Id: I849c149fd5dd8c3b2b0af38654fb353e3727871b
2020-10-25gdb: use inferior parameter in add_vsyscall_pageSimon Marchi2-1/+7
Use the new inferior parameter instead of target_gdbarch. There are still hidden references to the current context behind core_bfd and exec_bfd, but this seemed better than nothing. gdb/ChangeLog: * symfile-mem.c (add_vsyscall_page): Use inferior parameter instead of target_gdbarch. Change-Id: Iaf5ace555ee8e46cbef5190aca1f6fe639f06677
2020-10-25gdb: make jit.c use the inferior_created inferior parameterSimon Marchi4-19/+25
Use the inferior parameter now available in jit_inferior_created_hook. It is passed down to jit_inferior_init, which uses it as much as possible instead of the current inferior or current program space. gdb/ChangeLog: * jit.c (jit_reader_load_command): Pass current inferior. (jit_inferior_init): Change parameter type to inferior, use it. (jit_inferior_created): Remove. (jit_inferior_created_hook): Pass inferior parameter down. (_initialize_jit): Use jit_inferior_created_hook instead of jit_inferior_created. * jit.h (jit_inferior_created_hook): Add inferior parameter. * infrun.c (follow_exec): Pass inferior to jit_inferior_created_hook. Change-Id: If3a2114a933370dd313d5abd623136d273cdb8fa
2020-10-25gdb: pass inferior to check_pid_namespace_matchSimon Marchi2-3/+9
Pass the inferior argument available in thread_db_inferior_created, and use it to do most things requiring the inferior. check_pid_namespace_match is not completely decoupled from the current inferior yet, there are hidden references behind target_can_run, for example. But I think this is still a good step forward. gdb/ChangeLog: * linux-thread-db.c (check_pid_namespace_match): Add inferior parameter and use it. (thread_db_inferior_created): Pass inferior argument. Change-Id: Ib768b14fc61dcf115fe13f776691f2c2f36e0679
2020-10-25gdb: add inferior parameter to inferior_created observableSimon Marchi11-10/+24
I think it would make sense for the inferior_created observable to say which inferior is being dealt with, rather than relying on it being the current inferior. This patch adds an inferior parameter to inferior_created, but does not change the callbacks to use it. gdb/ChangeLog: * aix-thread.c (aix_thread_inferior_created): Add inferior parameter. * bsd-uthread.c (bsd_uthread_inferior_created): Likewise. * dummy-frame.c (cleanup_dummy_frames): Likewise. * jit.c (jit_inferior_created): Likewise. * linux-thread-db.c (thread_db_inferior_created): Likewise. * m68k-linux-tdep.c (m68k_linux_inferior_created): Likewise. * observable.h (inferior_created): Likewise. * ravenscar-thread.c (ravenscar_inferior_created): Likewise. * symfile-mem.c (add_vsyscall_page): Likewise. * infcmd.c (post_create_inferior): Pass inferior argument. Change-Id: I2543d19ff055a9df6b269929faea10b27d2adc5e
2020-10-24Document the GDB 10.1 release in gdb/ChangeLogJoel Brobecker1-0/+4
gdb/ChangeLog: GDB 10.1 released.
2020-10-23[gdb/testsuite] Don't use default form in Dwarf::_guess_formTom de Vries2-9/+34
The only possible form for a DW_AT_low_pc attribute is DW_FORM_addr. When specifying in dwarf assembly a low_pc attribute without explicit form: ... {low_pc {main_label - 4}} ... the resulting attribute uses DW_FORM_string, which is misinterpreted by gdb when reading it as: ... cu->base_address = attr->as_address (); ... Stop using DW_FORM_string as default form. Instead, use a default form based on the attribute name, if possible and unambiguous. Otherwise, error out. F.i.: - for DW_AT_low_pc we use DW_FORM_addr. - For DW_AT_high_pc, we don't specify a default form because it could be either address or constant class. - For DW_AT_name, we use DW_FORM_string. While we could encode with DW_FORM_strp instead, DW_FORM_string is always ok. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-10-23 Tom de Vries <tdevries@suse.de> * lib/dwarf.exp (Dwarf::_guess_form): Return "" by default instead of DW_FORM_string. (Dwarf::_default_form): New proc. (Dwarf::_handle_DW_TAG): Use _default_form. Error out if no form was guessed.
2020-10-23[gdb/testsuite] Use $srcfile in DW_AT_name for CUTom de Vries21-24/+72
In dwarf assembly test-case ada-linkage-name.exp, we have: ... standard_testfile .c -debug.S ... cu {} { DW_TAG_compile_unit { {DW_AT_name ada-linkage-name.c} ... Use $srcfile instead of ada-linkage-name.c. In dwarf assembly test-case atomic-type.exp, we have: ... standard_testfile .c -dw.S ... cu {} { DW_TAG_compile_unit { {DW_AT_name atomic-type-dw.c} ... The dwarf generated into atomic-type-dw.S is meant to represent the code in atomic-type.c, not atomic-type-dw.c, so use $srcfile instead of atomic-type-dw.c. Fix these and similar. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-10-23 Tom de Vries <tdevries@suse.de> * gdb.dwarf2/ada-linkage-name.exp: Use $srcfile for DW_AT_name of CU. * gdb.dwarf2/atomic-type.exp: Same. * gdb.dwarf2/bad-regnum.exp: Same. * gdb.dwarf2/cpp-linkage-name.exp: Same. * gdb.dwarf2/dw2-align.exp: Same. * gdb.dwarf2/dw2-bad-elf.exp: Same. * gdb.dwarf2/dw2-bad-mips-linkage-name.exp: Same. * gdb.dwarf2/dw2-bad-unresolved.exp: Same. * gdb.dwarf2/dw2-namespaceless-anonymous.exp: Same. * gdb.dwarf2/dw2-opt-structptr.exp: Same. * gdb.dwarf2/dw2-unusual-field-names.exp: Same. * gdb.dwarf2/enum-type.exp: Same. * gdb.dwarf2/frame-inlined-in-outer-frame.exp: Same. * gdb.dwarf2/info-locals-optimized-out.exp: Same. * gdb.dwarf2/main-subprogram.exp: Same. * gdb.dwarf2/missing-type-name.exp: Same. * gdb.dwarf2/nonvar-access.exp: Same. * gdb.dwarf2/typedef-void-finish.exp: Same. * gdb.dwarf2/var-access.exp: Same. * gdb.dwarf2/void-type.exp: Same.
2020-10-23ada-typeprint.c::ada_print_type: Remove redundant call to ada_check_typedefJoel Brobecker2-3/+5
This commit removes a call to ada_check_typedef which has already been done a few lines earlier in the same function, so the second one is superfluous. gdb/ChangeLog: * ada-typeprint.c (ada_print_type): Remove superfluous second call to ada_check_typedef.
2020-10-23gdb: move f_language class into a header fileAndrew Burgess7-329/+387
Moves the f_language class from f-lang.c into f-lang.h. The benefit of this is that functions declared in other f-*.c files can become member functions without having to go through a level of indirection. Some additional support functions have now become private member functions of the f_language class, these are mostly functions that then called some other function that was itself a member of the language_defn class hierarchy. There should be no user visible changes after this commit. gdb/ChangeLog: * f-exp.y (f_parse): Rename to... (f_language::parser): ...this. * f-lang.c (f_get_encoding): Rename to... (f_language::get_encoding): ...this. (f_op_print_tab): Rename to... (f_language::op_print_tab): ...this. (exp_descriptor_f): Rename to... (f_language::exp_descriptor_tab): ...this. (class f_language): Moved to f-lang.h. (f_language::language_arch_info): New function, moved out of class declaration. (f_language::search_name_hash): Likewise. (f_language::lookup_symbol_nonlocal): Likewise. (f_language::get_symbol_name_matcher_inner): Likewise. * f-lang.h: Add 'valprint.h' include. (class f_language): Moved here from f-lang.c. * f-typeprint.c (f_type_print_args): Delete commented out declaration. (f_print_typedef): Rename to... (f_language::print_typedef): ...this. (f_print_type): Rename to... (f_language::print_type): ...this. (f_type_print_varspec_prefix): Delete declaration and rename to... (f_language::f_type_print_varspec_prefix): ...this. (f_type_print_varspec_suffix): Delete declaration and rename to... (f_language::f_type_print_varspec_suffix): ...this. (f_type_print_base): Delete declaration and rename to... (f_language::f_type_print_base): ...this. * f-valprint.c (f_value_print_inner): Rename to... (f_language::value_print_inner): ...this. * parse.c: Delete 'f-lang.h' include.
2020-10-23gdb: Improve documentation comment on language_defn::print_typeAndrew Burgess2-4/+13
Improves the comment at the declaration of language_defn::print_type. There should be no user visible changes after this commit. gdb/ChangeLog: * language.h (language_defn::print_type): Add variable names in declaration, and update header comment.
2020-10-23gdb: Rename language_defn::demangleAndrew Burgess10-10/+32
GDB already has a global symbol `demangle` (a boolean), having a language method called `demangle` is not a good idea as we often want to reference `demangle` the control variable inside `demangle` the member function. This commit renames `demangle` the member function to `demangle_symbol`. There should be no user visible changes after this commit. gdb/ChangeLog: * ada-lang.c (ada_language::demangle): Rename to... (ada_language::demangle_symbol): ...this. * c-lang.c (cplus_language::demangle): Rename to... (cplus_language::demangle_symbol): ...this. * d-lang.c (d_language::demangle): Rename to... (d_language::demangle_symbol): ...this. * f-lang.c (f_language::demangle): Rename to... (f_language::demangle_symbol): ...this. * go-lang.c (go_language::demangle): Rename to... (go_language::demangle_symbol): ...this. * language.c (language_demangle): Update call to demangle_symbol. (auto_or_unknown_language::demangle): Rename to... (auto_or_unknown_language::demangle_symbol): ...this. * language.h (language_defn::demangle): Rename to... (language_defn::demangle_symbol): ...this. * objc-lang.c (objc_language::demangle): Rename to... (objc_language::demangle_symbol): ...this. * rust-lang.c (rust_language::demangle): Rename to... (rust_language::demangle_symbol): ...this.