21#ifndef PALUDIS_GUARD_PALUDIS_UTIL_ELF_HH
22#define PALUDIS_GUARD_PALUDIS_UTIL_ELF_HH 1
24#include <paludis/util/elf_sections.hh>
26#include <paludis/util/iterator_range.hh>
28#include <paludis/util/wrapped_forward_iterator-fwd.hh>
35 class InvalidElfFileError :
39 InvalidElfFileError(
const InvalidElfFileError &) =
default;
40 InvalidElfFileError(
const std::string &)
noexcept;
43 template <
typename ElfType_>
46 template <
typename ElfType_>
52 typename ElfType_::Header _hdr;
55 static bool is_valid_elf(std::istream & stream);
56 ElfObject(std::istream & stream);
72 return _hdr.e_machine;
80 return _hdr.e_ident[EI_OSABI];
88 return _hdr.e_ident[EI_ABIVERSION];
107 return (_hdr.e_ident[EI_DATA] == ELFDATA2MSB);
110 unsigned int get_number_of_sections()
const
115 typedef ElfObjectSectionIteratorTag<ElfType_> SectionIteratorTag;
117 SectionIterator section_begin()
const;
118 SectionIterator section_end()
const;
119 IteratorRange<SectionIterator> sections() const noexcept
121 return {section_begin(), section_end()};
124 SectionIterator get_section_by_index(
unsigned int index)
const;
126 void resolve_all_strings();
unsigned int get_type() const
Definition elf.hh:62
unsigned char get_os_abi_version() const
Definition elf.hh:86
unsigned int is_big_endian() const
Definition elf.hh:104
unsigned int get_flags() const
Definition elf.hh:94
unsigned int get_arch() const
Definition elf.hh:70
unsigned char get_os_abi() const
Definition elf.hh:78
Definition exception.hh:77
Definition wrapped_forward_iterator.hh:42
#define PALUDIS_VISIBLE
Definition attributes.hh:59
Definition about_metadata-fwd.hh:24