/* DWARF 2 debugging format support for GDB.
- Copyright (C) 1994-2018 Free Software Foundation, Inc.
+ Copyright (C) 1994-2019 Free Software Foundation, Inc.
This file is part of GDB.
#ifndef DWARF2READ_H
#define DWARF2READ_H
+#include <unordered_map>
+#include "dwarf-index-cache.h"
#include "filename-seen-cache.h"
#include "gdb_obstack.h"
+/* Hold 'maintenance (set|show) dwarf' commands. */
+extern struct cmd_list_element *set_dwarf_cmdlist;
+extern struct cmd_list_element *show_dwarf_cmdlist;
+
typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
DEF_VEC_P (dwarf2_per_cu_ptr);
struct mapped_index;
struct mapped_debug_names;
struct signatured_type;
+struct die_info;
+typedef struct die_info *die_info_ptr;
/* Collection of data recorded per objfile.
This hangs off of dwarf2_objfile_data_key. */
bool dwp_checked = false;
/* The DWP file if there is one, or NULL. */
- struct dwp_file *dwp_file = NULL;
+ std::unique_ptr<struct dwp_file> dwp_file;
/* The shared '.dwz' file, if one exists. This is used when the
original data was compressed using 'dwz -m'. */
- struct dwz_file *dwz_file = NULL;
+ std::unique_ptr<struct dwz_file> dwz_file;
/* A flag indicating whether this objfile has a section loaded at a
VMA of 0. */
bool using_index = false;
/* The mapped index, or NULL if .gdb_index is missing or not being used. */
- mapped_index *index_table = NULL;
+ std::unique_ptr<mapped_index> index_table;
/* The mapped index, or NULL if .debug_names is missing or not being used. */
std::unique_ptr<mapped_debug_names> debug_names_table;
htab_t die_type_hash {};
/* The CUs we recently read. */
- VEC (dwarf2_per_cu_ptr) *just_read_cus = NULL;
+ std::vector<dwarf2_per_cu_data *> just_read_cus;
/* Table containing line_header indexed by offset and offset_in_dwz. */
htab_t line_header_hash {};
/* Table containing all filenames. This is an optional because the
table is lazily constructed on first access. */
gdb::optional<filename_seen_cache> filenames_cache;
+
+ /* If we loaded the index from an external file, this contains the
+ resources associated to the open file, memory mapping, etc. */
+ std::unique_ptr<index_cache_resource> index_cache_res;
+
+ /* Mapping from abstract origin DIE to concrete DIEs that reference it as
+ DW_AT_abstract_origin. */
+ std::unordered_map<die_info_ptr, std::vector<die_info_ptr>>
+ abstract_to_concrete;
};
/* Get the dwarf2_per_objfile associated to OBJFILE. */