forked from Imagelibrary/binutils-gdb
5b75b03006538d552813369deebc2069f3082b01
The dwarf2_per_cu_data type is going to become objfile-independent, while the dwarf2_cu type will stay object-dependent. This patch removes the backlink from dwarf2_per_cu_data to dwarf2_cu, in favor of the dwarf2_per_objfile::m_dwarf2_cus map. It maps dwarf2_per_cu_data objects to the corresponding dwarf2_cu objects for this objfile. If a CU has been read in in the context of this objfile, then an entry will be present in the map. The dwarf2_cu objects that are read in are currently kept in a linked list rooted in the dwarf2_per_bfd. Except that the dwarf2_cu objects are not simply linked together, they are interleaved with their corresponding dwarf2_per_cu_data objects. So if we have CUs A and B read in, the dwarf2_per_bfd::read_in_chain will point to a chain like this (DPCD == dwarf2_per_cu_data, DC == dwarf2_cu): DPCD A -> DC A -> DPCD B -> DC B Obviously, this can't stay as is, since a same CU can be read in for an objfile but not read in for another objfile sharing the same BFD, and the dwarf2_per_cu_data::cu link is removed. This is all replaced by the dwarf2_per_objfile::m_dwarf2_cus map. gdb/ChangeLog: * dwarf2/read.h (struct dwarf2_cu): Forward-declare. (struct dwarf2_per_bfd) <free_cached_comp_units>: Remove, move to dwarf2_per_objfile. <read_in_chain>: Remove. (struct dwarf2_per_objfile) <get_cu, set_cu, remove_cu, remove_all_cus, age_comp_units>: New methods. <m_dwarf2_cus>: New member. (struct dwarf2_per_cu_data) <cu>: Remove. * dwarf2/read.c (struct dwarf2_cu) <read_in_chain>: Remove. (age_cached_comp_units, free_one_cached_comp_unit): Remove, moved to methods of dwarf2_per_objfile. (dwarf2_clear_marks): Remove. (dwarf2_queue_item::~dwarf2_queue_item): Update. (dwarf2_per_bfd::~dwarf2_per_bfd): Don't free dwarf2_cus. (dwarf2_per_bfd::free_cached_comp_units): Remove. (dwarf2_per_objfile::remove_all_cus): New. (class free_cached_comp_units) <~free_cached_comp_units>: Update. (load_cu): Update. (dw2_do_instantiate_symtab): Adjust. (fill_in_sig_entry_from_dwo_entry): Adjust. (cutu_reader::init_tu_and_read_dwo_dies): Update. (cutu_reader::cutu_reader): Likewise. (cutu_reader::keep): Use dwarf2_per_objfile::set_cu. (cutu_reader::cutu_reader): Use dwarf2_per_objfile::get_cu. (process_psymtab_comp_unit): Use dwarf2_per_objfile::remove_cu and dwarf2_per_objfile::age_comp_units. (load_partial_comp_unit): Update. (maybe_queue_comp_unit): Use dwarf2_per_objfile::get_cu. (process_queue): Likewise. (find_partial_die): Use dwarf2_per_objfile::get_cu instead of cu backlink. (dwarf2_read_addr_index): Likewise. (follow_die_offset): Likewise. (dwarf2_fetch_die_loc_sect_off): Likewise. (dwarf2_fetch_constant_bytes): Likewise. (dwarf2_fetch_die_type_sect_off): Likewise. (follow_die_sig_1): Likewise. (load_full_type_unit): Likewise. (read_signatured_type): Likewise. (dwarf2_cu::dwarf2_cu): Don't set cu field. (dwarf2_cu::~dwarf2_cu): Remove. (dwarf2_per_objfile::get_cu): New. (dwarf2_per_objfile::set_cu): New. (age_cached_comp_units): Rename to... (dwarf2_per_objfile::age_comp_units): ... this. Adjust to std::unordered_map. (free_one_cached_comp_unit): Rename to... (dwarf2_per_objfile::remove_cu): ... this. Adjust to std::unordered_map. (dwarf2_per_objfile::~dwarf2_per_objfile): New. (dwarf2_mark_helper): Use dwarf2_per_objfile::get_cu, expect a dwarf2_per_objfile in data. (dwarf2_mark): Pass dwarf2_per_objfile in data to htab_traverse. (dwarf2_clear_marks): Remove.
…
…
…
…
…
…
…
…
…
…
…
…
…
README for GNU development tools This directory contains various GNU compilers, assemblers, linkers, debuggers, etc., plus their support routines, definitions, and documentation. If you are receiving this as part of a GDB release, see the file gdb/README. If with a binutils release, see binutils/README; if with a libg++ release, see libg++/README, etc. That'll give you info about this package -- supported targets, how to use it, how to report bugs, etc. It is now possible to automatically configure and build a variety of tools with one command. To build all of the tools contained herein, run the ``configure'' script here, e.g.: ./configure make To install them (by default in /usr/local/bin, /usr/local/lib, etc), then do: make install (If the configure script can't determine your type of computer, give it the name as an argument, for instance ``./configure sun4''. You can use the script ``config.sub'' to test whether a name is recognized; if it is, config.sub translates it to a triplet specifying CPU, vendor, and OS.) If you have more than one compiler on your system, it is often best to explicitly set CC in the environment before running configure, and to also set CC when running make. For example (assuming sh/bash/ksh): CC=gcc ./configure make A similar example using csh: setenv CC gcc ./configure make Much of the code and documentation enclosed is copyright by the Free Software Foundation, Inc. See the file COPYING or COPYING.LIB in the various directories, for a description of the GNU General Public License terms under which you can copy the files. REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info on where and how to report problems.
Description
Languages
C
50.6%
Makefile
22.6%
Assembly
13.2%
C++
5.9%
Roff
1.5%
Other
5.6%