aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-02-10gas -Z flagAlan Modra3-2/+9
-Z is supposed to "generate object file even after errors". It doesn't do so at the moment, unless you count a zero length object file as useful output. Fixed for most targets as follows. I suspect avr and pru need target patches. * output-file.c (output_file_close): Do a normal close when flag_always_generate_output. * write.c (write_object_file): Don't stop output when flag_always_generate_output.
2020-02-10z80 comments in archures.cAlan Modra3-19/+44
bfd-in2.h didn't match what was in archures.c and reloc.c. This fixes overlong comment lines and regenerates bfd-in2.h. * archures.c: Wrap overlong z80 comments. * bfd-in2.h: Regenerate.
2020-02-10Automatic date update in version.inGDB Administrator1-1/+1
2020-02-09[gdb] Mention CU offset for <artifical> if verboseTom de Vries2-0/+13
Say we're debugging a test-case with CUs with name "<artificial>", meaning not originating from a single file compilation, and use the verbose setting: ... $ gdb -iex "set verbose on" -batch cc1 Reading symbols from cc1... Reading in symbols for <artificial>... \ and /tmp/trunk/gcc/attribs.c... \ ... and /tmp/trunk/gcc/tree-ssa-reassoc.c... \ done. ... From the "/tmp/trunk/gcc/attribs.c" message, it's clear which CU is loaded. But that's not the case for the "<artificial>" message. The message uses the filename field of struct partial_symtab, which is documented like this: ... /* Name of the source file which this partial_symtab defines, or if the psymtab is anonymous then a descriptive name for debugging purposes, or "". It must not be NULL. */ ... So, fix this by setting the filename field to a more descriptive name than "<artificial>", by appending the CU offset. This way, we print instead: ... $ gdb -iex "set verbose on" -batch cc1 Reading symbols from cc1... Reading in symbols for <artificial>@0x41146d9 \ and /tmp/trunk/gcc/attribs.c... \ ... \ and /tmp/trunk/gcc/tree-ssa-reassoc.c... \ done. ... Build and reg-tested on x86_64-linux. gdb/ChangeLog: 2020-02-09 Tom de Vries <tdevries@suse.de> * dwarf2read.c (process_psymtab_comp_unit_reader): Append CU offset to filename if it matches "<artificial>".
2020-02-09[gdb/testsuite] Capture many-headers.exp progress and output in gdb.logTom de Vries2-5/+20
When running test-case gdb.base/many-headers.exp, we have test output on stdout/stderr: ... Running src/gdb/testsuite/gdb.base/many-headers.exp ... [New LWP 759] Core was generated by `outputs/gdb.base/many-headers/many'. Program terminated with signal SIGSEGV, Segmentation fault. \#0 0x0000000000400688 in ?? () === gdb Summary === nr of expected passes 1 ... Furthermore, the only trace in gdb.log that we have of the gdb command issued is: ... PASS: gdb.base/many-headers.exp: read core file ... Fix this by echoing the gdb command in gdb.log, and capturing the command output and pasting it into gdb.log: ... ( ulimit -s 4096; \ gdb -nw -nx -data-directory data-directory -batch -core=many-headers.core ) [New LWP 1542] Core was generated by `many'. Program terminated with signal SIGSEGV, Segmentation fault. \#0 0x0000000000400688 in ?? () PASS: gdb.base/many-headers.exp: read core file ... Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-02-09 Tom de Vries <tdevries@suse.de> * gdb.base/many-headers.exp: Echo gdb command to gdb.log. Capture gdb command output and paste it into gdb.log. If any, paste catch message to gdb.log.
2020-02-09Use enums for human-readable exception information.Hannes Domani2-6/+102
Changes to $_siginfo type to this: (gdb) pt $_siginfo type = struct EXCEPTION_RECORD { enum ExceptionCode ExceptionCode; DWORD ExceptionFlags; struct EXCEPTION_RECORD *ExceptionRecord; PVOID ExceptionAddress; DWORD NumberParameters; union { ULONG_PTR ExceptionInformation[15]; struct {...} AccessViolationInformation; }; } (gdb) pt $_siginfo.ExceptionCode type = enum ExceptionCode {FATAL_APP_EXIT = 1073741845, DBG_CONTROL_C = 1073807365, DBG_CONTROL_BREAK = 1073807368, DATATYPE_MISALIGNMENT = 2147483650, BREAKPOINT, SINGLE_STEP, ACCESS_VIOLATION = 3221225477, IN_PAGE_ERROR, ILLEGAL_INSTRUCTION = 3221225501, NONCONTINUABLE_EXCEPTION = 3221225509, INVALID_DISPOSITION, ARRAY_BOUNDS_EXCEEDED = 3221225612, FLOAT_DENORMAL_OPERAND, FLOAT_DIVIDE_BY_ZERO, FLOAT_INEXACT_RESULT, FLOAT_INVALID_OPERATION, FLOAT_OVERFLOW, FLOAT_STACK_CHECK, FLOAT_UNDERFLOW, INTEGER_DIVIDE_BY_ZERO, INTEGER_OVERFLOW, PRIV_INSTRUCTION, STACK_OVERFLOW = 3221225725, FAST_FAIL = 3221226505} (gdb) pt $_siginfo.AccessViolationInformation type = struct { enum ViolationType Type; PVOID Address; } (gdb) pt $_siginfo.AccessViolationInformation.Type type = enum ViolationType {READ_ACCESS_VIOLATION, WRITE_ACCESS_VIOLATION, DATA_EXECUTION_PREVENTION_VIOLATION = 8} Which makes it easier to understand the reason of the exception: (gdb) p $_siginfo $1 = { ExceptionCode = ACCESS_VIOLATION, ExceptionFlags = 0, ExceptionRecord = 0x0, ExceptionAddress = 0x401632 <main+18>, NumberParameters = 2, { ExceptionInformation = {1, 291, 0 <repeats 13 times>}, AccessViolationInformation = { Type = WRITE_ACCESS_VIOLATION, Address = 0x123 } } } gdb/ChangeLog: 2020-02-09 Hannes Domani <ssbssa@yahoo.de> * windows-tdep.c (struct enum_value_name): New struct. (create_enum): New function. (windows_get_siginfo_type): Create and use enum types.
2020-02-09Display ExceptionRecord for $_siginfoHannes Domani6-1/+155
Uses the $_siginfo convenience variable to show the last exception. The type looks like this: (gdb) pt $_siginfo type = struct EXCEPTION_RECORD { DWORD ExceptionCode; DWORD ExceptionFlags; struct EXCEPTION_RECORD *ExceptionRecord; PVOID ExceptionAddress; DWORD NumberParameters; ULONG_PTR ExceptionInformation[15]; } EXCEPTION_RECORD is documented at [1]. Example: Program received signal SIGSEGV, Segmentation fault. main () at crasher.c:4 4 *(int*)0x123 = 0; (gdb) p $_siginfo $1 = { ExceptionCode = 3221225477, ExceptionFlags = 0, ExceptionRecord = 0x0, ExceptionAddress = 0x401632 <main+18>, NumberParameters = 2, ExceptionInformation = {1, 291, 0 <repeats 13 times>} } (gdb) p/x $_siginfo.ExceptionCode $2 = 0xc0000005 (gdb) p/x $_siginfo.ExceptionInformation[1] $3 = 0x123 And 0xc0000005 is the value of EXCEPTION_ACCESS_VIOLATION. [1] https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-exception_record gdb/ChangeLog: 2020-02-09 Hannes Domani <ssbssa@yahoo.de> * NEWS: Mention $_siginfo support for Windows. * windows-nat.c (handle_exception): Set siginfo_er. (windows_nat_target::mourn_inferior): Reset siginfo_er. (windows_xfer_siginfo): New function. (windows_nat_target::xfer_partial): Call windows_xfer_siginfo. * windows-tdep.c (struct windows_gdbarch_data): New struct. (init_windows_gdbarch_data): New function. (get_windows_gdbarch_data): New function. (windows_get_siginfo_type): New function. (windows_init_abi): Register windows_get_siginfo_type. (_initialize_windows_tdep): Register init_windows_gdbarch_data. gdbserver/ChangeLog: 2020-02-09 Hannes Domani <ssbssa@yahoo.de> * win32-low.c (win32_clear_inferiors): Reset siginfo_er. (handle_exception): Set siginfo_er. (win32_xfer_siginfo): New function.
2020-02-09Automatic date update in version.inGDB Administrator1-1/+1
2020-02-08Remove "keep" parameter from cutu_reader constructorTom Tromey2-27/+43
cutu_reader has a "keep" parameter, which is used to decide what to do with a new CU when the reader is destroyed. Most code does not try to preserve the CU, so this patch removes this parameter and instead adds a new method that users can call to preserve the CU on the chain. gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (class cutu_reader) <cutu_reader, init_tu_and_read_dwo_dies>: Remove "keep" parameter. <keep>: Declare method. <m_keep>: Remove member. <~cutu_reader>: Remove. (cutu_reader::init_tu_and_read_dwo_dies): Update. (cutu_reader::cutu_reader): Update. (cutu_reader::keep): Rename from ~cutu_reader. (process_psymtab_comp_unit, build_type_psymtabs_1) (process_skeletonless_type_unit, load_partial_comp_unit) (load_full_comp_unit, dwarf2_read_addr_index) (read_signatured_type): Update. Change-Id: I859b1c64313569d76d46317c14e9b077ebc3a27b
2020-02-08Simplify "want_partial_unit" handlingTom Tromey2-9/+13
This changes the "want_partial_unit" parameters to have type bool, and also removes the parameter from process_psymtab_comp_unit_reader. This latter change seemed like an improvement, because it avoids a pointless function call in the case where we are not planning to read a partial unit. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (process_psymtab_comp_unit_reader): Remove "want_partial_unit" parameter. (process_psymtab_comp_unit): Change want_partial_unit to bool. Inline check for DW_TAG_partial_unit. (dwarf2_build_psymtabs_hard, scan_partial_symbols): Update. Change-Id: I99e647f0c4faa3346e90a6e7bacc82af57eccff1
2020-02-08Move two more functions to dwarf2/leb.hTom Tromey3-31/+34
This moves read_n_bytes and read_direct_string to be with the the low-level value-reading code. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (read_n_bytes, read_direct_string): Move to read.c. * dwarf2/leb.h (read_n_bytes, read_direct_string): Move from read.c. Change-Id: Id07bfa13d93c0ac1f47a385749a8f01f4755b818
2020-02-08Convert read_address to a method on comp_unit_headTom Tromey4-69/+83
This changes read_address to be a method on comp_unit_head. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (read_address): Move to comp-unit.c. (dwarf2_rnglists_process, dwarf2_ranges_process) (read_attribute_value, dwarf_decode_lines_1) (var_decode_location, decode_locdesc): Update. * dwarf2/comp-unit.c (comp_unit_head::read_address): Move from read.c. Remove "cu" parameter. * dwarf2/comp-unit.h (struct comp_unit_head) <read_address>: New method. Change-Id: Ibd6c7235f2e4d5fd88c272cfd2c3d3328618cc56
2020-02-08Convert read_offset to method on comp_unit_headTom Tromey4-32/+32
This changes one of the read_offset overloads to be a method on comp_unit_head. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (read_attribute_value, read_indirect_string) (read_indirect_line_string): Update. * dwarf2/comp-unit.c (read_offset): Remove. (read_comp_unit_head): Update. * dwarf2/comp-unit.h (struct comp_unit_head) <read_offset>: New method. (read_offset): Don't declare. Change-Id: Ia595702a5748337b7c031352bc437956baab9990
2020-02-08Create dwarf2/comp-unit.[ch]Tom Tromey5-293/+378
This creates the new files dwarf2/comp-unit.[ch], moving comp_unit_head and helpers to those files. A couple of functions are turned into methods, because it was convenient to do so now. 2020-02-08 Tom Tromey <tom@tromey.com> * Makefile.in (COMMON_SFILES): Add dwarf2/comp-unit.c. * dwarf2/read.c (struct comp_unit_head): Move to dwarf2/comp-unit.h. (enum class rcuh_kind): Move to comp-unit.h. (get_cu_length, offset_in_cu_p): Now methods on comp_unit_head. (read_comp_unit_head, error_check_comp_unit_head) (read_and_check_comp_unit_head): Move to comp-unit.c. (read_offset, dwarf_unit_type_name): Likewise. (create_debug_type_hash_table, read_cutu_die_from_dwo) (cutu_reader::cutu_reader, read_call_site_scope) (find_partial_die, follow_die_offset): Update. * dwarf2/comp-unit.h: New file, from dwarf2read.c. Change-Id: Id961b9674c0081ed061083c8152c38b27b27388a
2020-02-08Move read_offset_1 to leb.cTom Tromey4-31/+41
This moves read_offset_1 to leb.c, as it is a low-level data-reading function. It is also renamed to remove the "_1", because gdb can use overloading now, and this is clearer. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (read_offset_1): Move to leb.c. (read_abbrev_offset, read_offset, dwarf_decode_line_header) (dwarf_decode_macro_bytes): Update. * dwarf2/leb.c (read_offset): Rename; move from read.c. * dwarf2/leb.h (read_offset): Declare. Change-Id: I048140598acfa76eade2cc529ab7933d4b9ca0b3
2020-02-08Convert dwarf2_section_size to a methodTom Tromey3-18/+22
This changes dwarf2_section_size to be a method on dwarf2_section_info. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (dwarf2_section_size): Remove. (error_check_comp_unit_head, dwarf2_symbol_mark_computed): Update. * dwarf2/section.h (struct dwarf2_section_info) <get_size>: New method. Change-Id: I12928fee5c84350ce98883e329357b86888d639b
2020-02-08Unify read_initial_length implementationsTom Tromey5-83/+78
There are two implementations of read_initial_length in gdb. This merges them and moves the resulting function to leb.c. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (read_initial_length): Move to leb.c. * dwarf2/leb.h (read_initial_length): Declare. * dwarf2/leb.c (read_initial_length): Move from read.c. Add handle_nonstd parameter. * dwarf2/frame.c (read_initial_length): Remove. (decode_frame_entry_1): Update. Change-Id: I34d37bad0f8a584bfa781432cba25e05e1bd5750
2020-02-08Add some methods to dwarf2_per_cu_dataTom Tromey6-134/+157
This changes a few helper functions to be methods on dwarf2_per_cu_data. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/loc.c (dwarf2_find_location_expression) (dwarf_evaluate_loc_desc::get_tls_address) (dwarf_evaluate_loc_desc::push_dwarf_reg_entry_value) (rw_pieced_value, dwarf2_evaluate_loc_desc_full) (dwarf2_locexpr_baton_eval, dwarf2_evaluate_property) (dwarf2_compile_property_to_c) (dwarf2_loc_desc_get_symbol_read_needs) (dwarf2_compile_expr_to_ax, locexpr_describe_location) (locexpr_tracepoint_var_ref, locexpr_generate_c_location) (loclist_describe_location, loclist_tracepoint_var_ref) (loclist_generate_c_location): Update. * compile/compile-loc2c.c (do_compile_dwarf_expr_to_c): Update. * dwarf2/loc.h (dwarf2_per_cu_objfile, dwarf2_per_cu_addr_size) (dwarf2_per_cu_ref_addr_size, dwarf2_per_cu_offset_size) (dwarf2_per_cu_text_offset, dwarf2_version): Don't declare. * dwarf2/read.c (dwarf2_per_cu_data::objfile) (dwarf2_per_cu_data::addr_size) (dwarf2_per_cu_data::ref_addr_size) (dwarf2_per_cu_data::text_offset) (dwarf2_per_cu_data::addr_type): Now methods. (per_cu_header_read_in): Make per_cu "const". (dwarf2_version): Remove. (dwarf2_per_cu_data::int_type): Now a method. (dwarf2_per_cu_data::_addr_sized_int_type): Likewise. (set_die_type, read_array_type, read_subrange_index_type) (read_tag_string_type, read_subrange_type): Update. * dwarf2/read.h (struct dwarf2_per_cu_data) <addr_size, offset_size, ref_addr_size, text_offset, addr_type, version, objfile, int_type, addr_sized_int_type>: Declare methods. Change-Id: I07a42fa26e00795352389fa7a0cc1c12997d26f7
2020-02-08Move dwarf2_per_cu_data::imported_symtabs earlierTom Tromey2-26/+31
This moves dwarf2_per_cu_data::imported_symtabs earlier, near where the other data members are located. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.h (struct dwarf2_per_cu_data) <imported_symtabs>: Move earlier. Change-Id: I314ddaa6f67c53a848e513b3f6d42913bd957833
2020-02-08Move DWARF line_header to new fileTom Tromey6-253/+317
This moves the line_header class to a pair of new files, making dwarf2/read.c somewhat smaller. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.h (dwarf_line_debug): Declare. * Makefile.in (COMMON_SFILES): Add dwarf2/line-header.c. * dwarf2/read.c: Move line_header code to new files. (dwarf_line_debug): No longer static. * dwarf2/line-header.c: New file. * dwarf2/line-header.h: New file. Change-Id: I8d9d8a2398b4e888e20cc5dd68d041c28b5a06e3
2020-02-08Change line_table methods to return unique_xmalloc_ptrTom Tromey2-17/+29
This changes the two new line_table methods to return unique_xmalloc_ptr. This removes a bit of manual memory management. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (struct line_header) <file_full_name, file_file_name>: Return unique_xmalloc_ptr. (line_header::file_file_name): Update. (line_header::file_full_name): Update. (dw2_get_file_names_reader): Update. (macro_start_file): Update. Change-Id: I9442dba43882fb26097d0770a291eea2b03913a4
2020-02-08Change file_full_name and file_file_name methodsTom Tromey2-23/+33
This changes file_full_name and file_file_name methods to be methods on line_header. This seems more clear to me. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (struct line_header) <file_full_name, file_file_name>: Declare methods. (dw2_get_file_names_reader): Update. (file_file_name): Now a method. (file_full_name): Likewise. (macro_start_file): Update. Change-Id: I50d3e91665a9637c732e1e8d8e4263764c766d9c
2020-02-08Move dwarf_always_disassemble to dwarf2/loc.cTom Tromey4-26/+36
dwarf_always_disassemble is only used in dwarf2/loc.c, so move the definition and the command infrastructure to that file. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (dwarf_always_disassemble) (show_dwarf_always_disassemble): Move to loc.c. (_initialize_dwarf2_read): Move "always-disassemble" registration to loc.c. * dwarf2/read.h (dwarf_always_disassemble): Don't declare. * dwarf2/loc.c (dwarf_always_disassemble): Move from read.c. Now static. (show_dwarf_always_disassemble): Move from read.c. (_initialize_dwarf2loc): Move always-disassemble from read.c. Change-Id: I33fb88112e98e583c3f4919d20e4d100f2ea0124
2020-02-08Change dwarf2_per_objfile::quick_file_names_table to htab_upTom Tromey3-10/+16
This changes dwarf2_per_objfile::quick_file_names_table to be an htab_up. This just removes a bit of manual management. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (~dwarf2_per_objfile): Update. (create_quick_file_names_table): Return htab_up. (dw2_get_file_names_reader, dw2_forget_cached_source_info): Update. * dwarf2/read.h (struct dwarf2_per_objfile) <quick_file_names_table>: Now htab_up. Change-Id: I4ff2fce8b8af27f4bfe01a11b97a889edfd23151
2020-02-08Minor simplification in abbrev_table::readTom Tromey2-1/+5
abbrev_table::read increments cur_abbrev->num_attrs in the inner loop, but there's no need to do this, as the information is already stored in the temporary vector. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/abbrev.c (abbrev_table::read): Simplify. Change-Id: I765f12850ffa1c6066e884bb22c94468d1abdba4
2020-02-08Use htab_up in abbrev_tableTom Tromey3-33/+44
This changes abbrev_table to use an htab_up rather than an ad hoc, bucket-based hash table. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/abbrev.c (abbrev_table): Move constructor from header. Rewrite. (abbrev_table::add_abbrev, abbrev_table::lookup_abbrev): Rewrite. * dwarf2/abbrev.h (struct abbrev_info) <next>: Remove. (abbrev_table::abbrev_table): No longer inline. (ABBREV_HASH_SIZE): Remove. (abbrev_table::m_abbrevs): Now an htab_up. Change-Id: Icbaa8e49501f9c43218d6a81a7e8c4d3a77d65dc
2020-02-08Minor cleanups in abbrev_tableTom Tromey4-37/+52
This cleans up the DWARF abbrev_table API a bit, primarily by making various methods and members private. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (read_cutu_die_from_dwo): Update. (cutu_reader): Update. (build_type_psymtabs_1): Update. * dwarf2/abbrev.c (abbrev_table::read): Rename. (abbrev_table::alloc_abbrev): Update. * dwarf2/abbrev.h (abbrev_table_up): Move earlier. (abbrev_table::read): New static method, renamed from abbrev_table_read_table. (abbrev_table::alloc_abbrev) (abbrev_table::add_abbrev): Now private. (abbrev_table::abbrev_table): Now private. (abbrev_table::m_abbrev_obstack): Now private. Rename. Change-Id: I320dca83b799f672909ae66f73b7aca266adbaf9
2020-02-08Change dwarf2_per_objfile::die_type_hash to htab_upTom Tromey3-13/+14
This changes dwarf2_per_objfile::die_type_hash to be an htab_up, moving its contents off the objfile obstack. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (set_die_type, get_die_type_at_offset): Update. * dwarf2/read.h (struct dwarf2_per_objfile) <die_type_hash>: Now htab_up. Change-Id: Ic651f99ebf71bf7ad2dc2880192adacf7b60964a
2020-02-08Change dwp_file to use htab_upTom Tromey2-12/+17
This changes dwp_file to use htab_up for the loaded_cus and loaded_tus members. This lets us avoid allocating the contents of these hash tables on the objfile obstack. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (struct dwp_file) <loaded_cus, loaded_tus>: Now htab_up. (lookup_dwo_unit_in_dwp): Update. (allocate_dwp_loaded_cutus_table): Return htab_up. Don't allocate on obstack. Change-Id: Id61209bf5c6c6faa0c067195af31fbcf26813a3a
2020-02-08Don't allocate DWO file hash on obstackTom Tromey2-7/+10
This changes allocate_dwo_file_hash_table so that it does not use the objfile obstack to store the contents of the hash table. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (allocate_dwo_file_hash_table): Don't allocate on obstack. Change-Id: Ic20a618acc7277e56aa18580c68f75c793bef97b
2020-02-08Change dwarf2_per_objfile::line_header_hash to htab_upTom Tromey3-13/+15
This changes dwarf2_per_objfile::line_header_hash to be an htab_up, and changes it to use heap allocation. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (~dwarf2_per_objfile): Don't delete line_header_hash. (handle_DW_AT_stmt_list): Update. Don't allocate on obstack. * dwarf2/read.h (struct dwarf2_per_objfile) <line_header_hash>: Change type to htab_up. Change-Id: Icb148a270838c0f96f38fc4a28b5b77d067927b6
2020-02-08Change dwarf2_per_objfile::type_unit_groups to htab_upTom Tromey3-11/+16
This changes dwarf2_per_objfile::type_unit_groups to be an htab_up, again allowing us to move the memory used by the hash table from the objfile obstack to the heap. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (allocate_type_unit_groups_table): Return htab_up. Don't allocate on obstack. (get_type_unit_group, dwarf2_build_psymtabs_hard): Update. * dwarf2/read.h (struct dwarf2_per_objfile) <type_unit_groups>: Change type to htab_up. Change-Id: Ia045df0ff3ec30aac813da5a9a2314a607ef7ec8
2020-02-08Change dwarf2_per_objfile::signatured_types to be htab_upTom Tromey4-52/+71
This changes dwarf2_per_objfile::signatured_types to be an htab_up. This in turn lets us change it not to use the objfile obstack for allocation; obstack allocation for hash tables is a bad practice because it leads to excess memory use if the table is ever resized. gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.h (struct dwarf2_per_objfile) <signatured_types>: Change type to htab_up. * dwarf2/read.c (create_signatured_type_table_from_index) (create_signatured_type_table_from_debug_names) (create_all_type_units, add_type_unit) (lookup_dwo_signatured_type, lookup_signatured_type) (process_skeletonless_type_unit): Update. (create_debug_type_hash_table, create_debug_types_hash_table): Change type of types_htab. (allocate_signatured_type_table, allocate_dwo_unit_table): Return htab_up. Don't allocate on obstack. (create_cus_hash_table): Change type of cus_htab parameter. (struct dwo_file) <cus, tus>: Now htab_up. (lookup_dwo_signatured_type, lookup_dwo_cutu) (process_dwo_file_for_skeletonless_type_units, lookup_dwo_cutu) (queue_and_load_all_dwo_tus): Update. * dwarf2/index-write.c (write_gdbindex): Update. (write_debug_names): Update. Change-Id: I290a209b96945fb5f415c82723b62830e9c4b467
2020-02-08Remove DWARF queue-related globalsTom Tromey3-60/+76
This removes some queue-related globals from the DWARF reader, in favor of a new member on dwarf2_per_objfile. Globals must be avoided in this code, because they prevent multi-threading the reader. gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.h (struct dwarf2_queue_item): Move from dwarf2/read.c. Remove "next" member. Add constructor ntad destructor. (struct dwarf2_per_objfile) <queue>: New member. * dwarf2/read.c (struct dwarf2_queue_item): Move to dwarf2/read.h. (dwarf2_queue, dwarf2_queue_tail): Remove. (class dwarf2_queue_guard): Add parameter to constructor. Use DISABLE_COPY_AND_ASSIGN. <m_per_objfile>: New member. <~dwarf2_queue_guard>: Rewrite. (dw2_do_instantiate_symtab, queue_comp_unit, process_queue): Update. (~dwarf2_queue_item): New. Change-Id: Ied1f6ff3691352a66c4709b0b2cba0588f49f79a
2020-02-08Introduce die_info::has_childrenTom Tromey2-48/+52
Many functions take a "has_children" parameter (either as an in- or out-parameter). However, it seems to me that it makes more sense to have "has_children" be an attribute of a DIE. Making this change allows this parameter to be eliminated in many places. gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (struct die_info) <has_children>: New member. (dw2_get_file_names_reader): Remove has_children. (dw2_get_file_names): Update. (read_cutu_die_from_dwo): Remove has_children. (cutu_reader::init_tu_and_read_dwo_dies) (cutu_reader::cutu_reader): Update. (process_psymtab_comp_unit_reader, build_type_psymtabs_reader): Remove has_children. (build_type_psymtabs_1, process_skeletonless_type_unit) (load_partial_comp_unit, load_full_comp_unit): Update. (create_dwo_cu_reader): Remove has_children. (create_cus_hash_table, read_die_and_children): Update. (read_full_die_1,read_full_die): Remove has_children. (read_signatured_type): Update. (class cutu_reader) <has_children>: Remove. Change-Id: I0d3d51ae9379554a66032648d51124bba07f87b4
2020-02-08Move DWARF code to dwarf2/ subdirectoryTom Tromey67-98/+133
This moves all the remaining DWARF code to the new dwarf2 subdirectory. This is just a simple renaming, with updates to includes as needed. gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/expr.c: Rename from dwarf2expr.c. * dwarf2/expr.h: Rename from dwarf2expr.h. * dwarf2/frame-tailcall.c: Rename from dwarf2-frame-tailcall.c. * dwarf2/frame-tailcall.h: Rename from dwarf2-frame-tailcall.h. * dwarf2/frame.c: Rename from dwarf2-frame.c. * dwarf2/frame.h: Rename from dwarf2-frame.h. * dwarf2/index-cache.c: Rename from dwarf-index-cache.c. * dwarf2/index-cache.h: Rename from dwarf-index-cache.h. * dwarf2/index-common.c: Rename from dwarf-index-common.c. * dwarf2/index-common.h: Rename from dwarf-index-common.h. * dwarf2/index-write.c: Rename from dwarf-index-write.c. * dwarf2/index-write.h: Rename from dwarf-index-write.h. * dwarf2/loc.c: Rename from dwarf2loc.c. * dwarf2/loc.h: Rename from dwarf2loc.h. * dwarf2/read.c: Rename from dwarf2read.c. * dwarf2/read.h: Rename from dwarf2read.h. * dwarf2/abbrev.c, aarch64-tdep.c, alpha-tdep.c, amd64-darwin-tdep.c, arc-tdep.c, arm-tdep.c, bfin-tdep.c, compile/compile-c-symbols.c, compile/compile-cplus-symbols.c, compile/compile-loc2c.c, cris-tdep.c, csky-tdep.c, findvar.c, gdbtypes.c, guile/scm-type.c, h8300-tdep.c, hppa-bsd-tdep.c, hppa-linux-tdep.c, i386-darwin-tdep.c, i386-linux-tdep.c, i386-tdep.c, iq2000-tdep.c, m32c-tdep.c, m68hc11-tdep.c, m68k-tdep.c, microblaze-tdep.c, mips-tdep.c, mn10300-tdep.c, msp430-tdep.c, nds32-tdep.c, nios2-tdep.c, or1k-tdep.c, riscv-tdep.c, rl78-tdep.c, rs6000-tdep.c, rx-tdep.c, s12z-tdep.c, s390-tdep.c, score-tdep.c, sh-tdep.c, sparc-linux-tdep.c, sparc-tdep.c, sparc64-linux-tdep.c, sparc64-tdep.c, tic6x-tdep.c, tilegx-tdep.c, v850-tdep.c, xstormy16-tdep.c, xtensa-tdep.c: Update. * Makefile.in (COMMON_SFILES): Update. (HFILES_NO_SRCDIR): Update. Change-Id: Ied9ce1436cd27ac4a4cffef10ec92e396f181928
2020-02-08Remove die_reader_specs::comp_dirTom Tromey2-11/+5
die_reader_specs::comp_dir is assigned but never read; this patch removes it. gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2read.c (struct die_reader_specs) <comp_dir>: Remove. (init_cu_die_reader, read_cutu_die_from_dwo): Update. Change-Id: I9818a2593197a6972cddec23cd2f3dd0ce28f580
2020-02-08Don't declare die_info in dwarf2read.hTom Tromey2-1/+4
There's no need to forward-declare struct die_info in dwarf2read.h. gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2read.h (struct die_info): Don't declare. Change-Id: I0b8dbf99558b9547d418cfd8ef387a21f7dfa660
2020-02-08Remove die_info_ptr typedefTom Tromey2-1/+4
die_info_ptr is not used and so can be removed. gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2read.h (die_info_ptr): Remove typedef. Change-Id: Ibd0a5ad55876dc96a35b658adc36348f01e48884
2020-02-08Change attr_form_is_block to be a methodTom Tromey4-33/+45
This changes attr_form_is_block to be a method. This is done separately because, unlike the other attribute functions, attr_form_is_block had special handling for the case where the argument was NULL. This required auditing each call site; in most cases, NULL was already ruled out, but in a few spots, an additional check was needed. gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2read.c (read_call_site_scope) (handle_data_member_location, dwarf2_add_member_fn) (mark_common_block_symbol_computed, read_common_block) (attr_to_dynamic_prop, partial_die_info::read) (var_decode_location, dwarf2_fetch_die_loc_sect_off) (dwarf2_symbol_mark_computed, set_die_type): Update. * dwarf2/attribute.h (struct attribute) <form_is_block>: Declare method. (attr_form_is_block): Don't declare. * dwarf2/attribute.c (attribute::form_is_block): Now a method. Change-Id: Idfb290c61d738301ab991666f43e0b9cf577b2ae
2020-02-08Change some attribute functions to be methodsTom Tromey4-103/+126
This changes most of the attribute-related functions to be methods. (attr_form_is_block changed in a subsequent patch.) gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2read.c (dwarf2_find_base_address, ) (read_call_site_scope, rust_containing_type) (dwarf2_get_pc_bounds, dwarf2_record_block_ranges) (handle_data_member_location, dwarf2_add_member_fn) (get_alignment, read_structure_type, process_structure_scope) (mark_common_block_symbol_computed, read_common_block) (read_tag_string_type, attr_to_dynamic_prop, read_subrange_type) (partial_die_info::read, read_attribute_value, new_symbol) (lookup_die_type, dwarf2_get_ref_die_offset) (dwarf2_get_attr_constant_value, follow_die_ref_or_sig) (dwarf2_fetch_die_loc_sect_off, get_DW_AT_signature_type) (dwarf2_symbol_mark_computed): Update. * dwarf2/attribute.h (struct attribute) <value_as_address, form_is_section_offset, form_is_constant, form_is_ref>: Declare methods. (value_as_address, attr_form_is_section_offset) (attr_form_is_constant, attr_form_is_ref): Don't declare. * dwarf2/attribute.c (attribute::value_as_address) (attribute::form_is_section_offset, attribute::form_is_constant) (attribute::form_is_ref): Now methods. Change-Id: I320dad13002c59b848dc86c39d5d7111c8a15bdc
2020-02-08Create dwarf2/attribute.[ch]Tom Tromey5-168/+253
This moves the attribute-related code out of dwarf2read.c and into the new files dwarf2/attribute.[ch]. gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2read.c (struct attribute, DW_STRING) (DW_STRING_IS_CANONICAL, DW_UNSND, DW_BLOCK, DW_SND, DW_ADDR) (DW_SIGNATURE, struct dwarf_block, attr_value_as_address) (attr_form_is_block, attr_form_is_section_offset) (attr_form_is_constant, attr_form_is_ref): Move. * dwarf2/attribute.h: New file. * dwarf2/attribute.c: New file, from dwarf2read.c. * Makefile.in (COMMON_SFILES): Add dwarf2/attribute.c. Change-Id: I1ea4c146256a1b9e38b66f1c605d782a14eeded7
2020-02-08Create dwarf2/abbrev.[ch]Tom Tromey5-224/+300
This moves the abbrev table code out of dwarf2read.c and into new files dwarf2/abbrev.[ch]. gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2read.c (abbrev_table_up, struct abbrev_info) (struct attr_abbrev, ABBREV_HASH_SIZE, struct abbrev_table): Move. (read_cutu_die_from_dwo, build_type_psymtabs_1): Update. (abbrev_table::alloc_abbrev, abbrev_table::add_abbrev) (abbrev_table::lookup_abbrev, abbrev_table_read_table): Move to abbrev.c. * dwarf2/abbrev.h: New file. * dwarf2/abbrev.c: New file, from dwarf2read.c. * Makefile.in (COMMON_SFILES): Add dwarf2/abbrev.c. Change-Id: I87911bc5297de4407587ca849fef8e8d19136c30
2020-02-08Change section functions to be methods of dwarf2_section_infoTom Tromey5-162/+183
This changes various section-related functions to be methods on dwarf2_section_info. I think this clarifies the role of these functions. This also changes one such function to return bool. gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2read.c (dwarf2_section_buffer_overflow_complaint) (dwarf2_section_size, dwarf2_get_section_info) (create_signatured_type_table_from_debug_names) (create_addrmap_from_aranges, read_debug_names_from_section) (get_gdb_index_contents_from_section, read_comp_unit_head) (error_check_comp_unit_head, read_abbrev_offset) (create_debug_type_hash_table, init_cu_die_reader) (read_cutu_die_from_dwo, dwarf2_build_psymtabs_hard) (read_comp_units_from_section, create_cus_hash_table) (create_dwp_hash_table, create_dwo_unit_in_dwp_v1) (create_dwp_v2_section, dwarf2_rnglists_process) (dwarf2_ranges_process, read_die_and_siblings, read_full_die) (abbrev_table_read_table, read_indirect_string_at_offset_from) (read_indirect_string_from_dwz, read_addr_index_1) (read_str_index, dwarf_decode_line_header, skip_form_bytes) (dwarf_decode_macro_bytes, dwarf_decode_macros) (fill_in_loclist_baton): Update. * dwarf2/section.h (struct dwarf2_section_info) <get_name, get_containing_section, get_bfd_owner, get_bfd_section, get_file_name, get_id, get_flags, empty, read>: Declare methods. (dwarf2_read_section, get_section_name, get_section_file_name) (get_containing_section, get_section_bfd_owner) (get_section_bfd_section, get_section_name, get_section_file_name) (get_section_id, get_section_flags, dwarf2_section_empty_p): Don't declare. * dwarf2/section.c (dwarf2_section_info::get_containing_section) (dwarf2_section_info::get_bfd_owner) (dwarf2_section_info::get_bfd_section) (dwarf2_section_info::get_name) (dwarf2_section_info::get_file_name, dwarf2_section_info::get_id) (dwarf2_section_info::get_flags, dwarf2_section_info::empty) (dwarf2_section_info::read): Now methods. * dwarf-index-write.c (class debug_names): Update. Change-Id: Ic849f182f57a18bad6b1c7c3b9368005d307758a
2020-02-08Create dwarf2/section.[ch]Tom Tromey6-223/+315
This moves some section-handling code from dwarf2read.c into new files, dwarf2/section.[ch]. gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2read.h (struct dwarf2_section_info, dwarf2_read_section): Move to dwarf2/section.h. * dwarf2read.c (get_containing_section, get_section_bfd_owner) (get_section_bfd_section, get_section_name) (get_section_file_name, get_section_id, get_section_flags) (dwarf2_section_empty_p, dwarf2_read_section): Moe to dwarf2/section.c. * dwarf2/section.h: New file. * dwarf2/section.c: New file, from dwarf2read.c. * Makefile.in (COMMON_SFILES): Add dwarf2/section.c. Change-Id: I9f8498094cf99d9521e9481622ce8adbd453daf4
2020-02-08Create dwarf2/leb.[ch]Tom Tromey8-149/+196
This moves some scalar-unpacking code into a couple of new files, dwarf2/leb.h and dwarf2/leb.c. gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2read.h (read_unsigned_leb128): Don't declare. * dwarf2read.c (read_1_byte, read_1_signed_byte, read_2_bytes) (read_2_signed_bytes, read_3_bytes, read_4_bytes) (read_4_signed_bytes, read_8_bytes): Move to dwarf2/leb.h. (read_unsigned_leb128, read_signed_leb128): Move to dwarf2/leb.c. * dwarf2/leb.h: New file, from dwarf2read.c. * dwarf2/leb.c: New file, from dwarf2read.c. * dwarf2-frame.c (read_1_byte, read_4_bytes, read_8_bytes): Remove. * Makefile.in (CONFIG_SRC_SUBDIR): Add dwarf2. (COMMON_SFILES): Add dwarf2/leb.c. Change-Id: Idd19647686c8f959d226a95fdfca4db47c6e96d0
2020-02-08Document the GDB 9.1 release in gdb/ChangeLogJoel Brobecker1-0/+4
gdb/ChangeLog: GDB 9.1 released.
2020-02-08Automatic date update in version.inGDB Administrator1-1/+1
2020-02-07Make fputs_unfiltered use fputs_maybe_filteredIain Buclaw6-7/+28
This patch redefines fputs_unfiltered in utils.c, with new behavior to forward parameters to fputs_maybe_filtered. This makes fputs_unfiltered identical to fputs_filtered, except filtering is disabled. Some callers of fputs_unfiltered have been updated to use ui_file_puts where they were using other ui_file_* functions anyway for IO. This fixes the problem I saw with \032\032post-prompt annotation being flushed to stdout in the wrong order. 2020-02-05 Iain Buclaw <ibuclaw@gdcproject.org> PR gdb/25190: * gdb/remote-sim.c (gdb_os_write_stderr): Update. * gdb/remote.c (remote_console_output): Update. * gdb/ui-file.c (fputs_unfiltered): Rename to... (ui_file_puts): ...this. * gdb/ui-file.h (ui_file_puts): Add declaration. * gdb/utils.c (emit_style_escape): Update. (flush_wrap_buffer): Update. (fputs_maybe_filtered): Update. (fputs_unfiltered): Add function. Change-Id: I17ed5078f71208344f2f8ab634a6518b1af6e213
2020-02-07Make gdb_flush also flush the wrap bufferIain Buclaw11-12/+44
This changes gdb_flush to also flush the internal wrap buffer. A few places needed to continue using the previous approach, so this also introduces ui_file_flush for those. 2020-02-05 Iain Buclaw <ibuclaw@gdcproject.org> * gdb/event-loop.c (gdb_wait_for_event): Update. * gdb/printcmd.c (printf_command): Update. * gdb/remote-fileio.c (remote_fileio_func_write): Update. * gdb/remote-sim.c (gdb_os_flush_stdout): Update. (gdb_os_flush_stderr): Update. * gdb/remote.c (remote_console_output): Update. * gdb/ui-file.c (gdb_flush): Rename to... (ui_file_flush): ...this. (stderr_file::write): Update. (stderr_file::puts): Update. * gdb/ui-file.h (gdb_flush): Rename to... (ui_file_flush): ...this. * gdb/utils.c (gdb_flush): Add function. * gdb/utils.h (gdb_flush): Add declaration. Change-Id: I7ca143d30f03dc39f218f6e880eb9bca9e15af39