9 Parser::Parser(Misc::SmartPointer
<ELF::Parser
> elf_parser
) : elf_parser(elf_parser
) {
10 Misc::SmartPointer
<ELF::Section
> debug_info_section
= elf_parser
->get_section(".debug_info");
11 Misc::SmartPointer
<Block
> debug_info
= elf_parser
->get_section(".debug_info")->get_content();
14 Word
Parser::parse_uleb128(Misc::SmartPointer
<Block
> block
) {
19 Byte next
= *block
->get_data(offset
);
20 result
|= (next
& 0x7f) << (offset
* 7);
21 if(next
& 0x80) break;
25 block
->remove(0, offset
);
30 SWord
Parser::parse_sleb128(Misc::SmartPointer
<Block
> block
) {
37 Word
Parser::parse_u8(Misc::SmartPointer
<Block
> block
) {
39 value
= (*block
->get_data(0));
45 Word
Parser::parse_u16(Misc::SmartPointer
<Block
> block
) {
47 value
= (*block
->get_data(0));
48 value
+= (*block
->get_data(1)) << 8;
53 Word
Parser::parse_u32(Misc::SmartPointer
<Block
> block
) {
55 value
= (*block
->get_data(0));
56 value
+= (*block
->get_data(1)) << 8;
57 value
+= (*block
->get_data(2)) << 16;
58 value
+= (*block
->get_data(3)) << 24;
63 Word
Parser::parse_u64(Misc::SmartPointer
<Block
> block
) {
65 value
= (*block
->get_data(0));
66 value
+= Word(*block
->get_data(1)) << 8;
67 value
+= Word(*block
->get_data(2)) << 16;
68 value
+= Word(*block
->get_data(3)) << 24;
69 value
+= Word(*block
->get_data(4)) << 32;
70 value
+= Word(*block
->get_data(5)) << 40;
71 value
+= Word(*block
->get_data(6)) << 48;
72 value
+= Word(*block
->get_data(7)) << 56;
79 } // namespace Monitor
80 } // namespace Aesalon