OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 The Native Client Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef DWARF_READER_DWARF_PARSER_H_ | |
6 #define DWARF_READER_DWARF_PARSER_H_ | |
7 | |
8 namespace elf_reader { | |
9 class ElfObject; | |
10 } // namespace elf_reader | |
11 | |
12 namespace dwarf_reader { | |
13 class IDwarfReader; | |
14 class ElfSectionReader; | |
15 | |
16 class DwarfParser { | |
17 public: | |
18 DwarfParser(); | |
19 virtual ~DwarfParser(); | |
20 | |
21 /// Initializes the instance of the class with a file path and by populating | |
22 /// an |ElfSectionReader|. | |
23 /// @param[in] elf_object The |ElfObject|, populated with a file location. | |
24 /// @param[in] file_path The file location that |elf_object| was populated | |
25 /// with. | |
26 /// @return false iff there is a sign that something may have gone wrong or | |
27 /// no memory was available. | |
28 bool Init(elf_reader::ElfObject *elf_object); | |
29 | |
30 /// Populates an instance of |IDwarfReader| with debug information. | |
31 /// @param[out] dwarf_reader the object to be populated. | |
32 void PopulateReader(IDwarfReader *dwarf_reader) const; | |
33 | |
34 private: | |
35 /// Populates an instance of IDwarfReader with the call frame information | |
36 /// from the |elf_object|. | |
37 /// @param[out] dwarf_reader the object to be populated. | |
38 void PopulateCallFrameInfo(IDwarfReader *dwarf_reader) const; | |
39 | |
40 /// Populates an instance of IDwarfReader with the compilation unit | |
41 /// information from the |elf_object|. | |
42 /// @param[out] dwarf_reader the object to be populated. | |
43 void PopulateCompilationUnits(IDwarfReader *dwarf_reader) const; | |
44 | |
45 /// Populates an instnace of IDwarfReader with the Location List information | |
46 /// from the |elf_object|. | |
47 /// @param[out] dwarf_reader the object to be populated. | |
48 void PopulateLocationLists(IDwarfReader *dwarf_reader) const; | |
49 | |
50 /// Populates an instance of IDwarfReader with the Range List information | |
51 /// from the |elf_object|. | |
52 /// @param[out] dwarf_reader the object to be populated. | |
53 void PopulateRangeLists(IDwarfReader *dwarf_reader) const; | |
54 | |
55 /// The location of the binary that this parser is parsing. | |
56 const char *file_path_; | |
57 /// The |ElfSectionReader| that is used to find the correct parts of the | |
58 /// file. | |
59 ElfSectionReader *elf_section_reader_; | |
60 | |
61 bool is_initialized_; | |
62 }; | |
63 } // namespace dwarf_reader | |
64 | |
65 #endif // DWARF_READER_DWARF_PARSER_H_ | |
OLD | NEW |