30 #ifndef COMMON_LINUX_ELFUTILS_INL_H__ 31 #define COMMON_LINUX_ELFUTILS_INL_H__ 38 template<
typename ElfClass,
typename T>
39 const T*
GetOffset(
const typename ElfClass::Ehdr* elf_header,
40 typename ElfClass::Off offset) {
41 return reinterpret_cast<const T*
>(
reinterpret_cast<uintptr_t
>(elf_header) +
45 template<
typename ElfClass>
48 typename ElfClass::Word section_type,
49 const typename ElfClass::Shdr* sections,
50 const char* section_names,
51 const char* names_end,
54 assert(sections != NULL);
61 for (
int i = 0; i < nsection; ++i) {
62 const char* section_name = section_names + sections[i].sh_name;
63 if (sections[i].sh_type == section_type &&
64 names_end - section_name >= name_len + 1 &&
74 #endif // COMMON_LINUX_ELFUTILS_INL_H__ size_t my_strlen(const char *s)
const T * GetOffset(const typename ElfClass::Ehdr *elf_header, typename ElfClass::Off offset)
int my_strcmp(const char *a, const char *b)
const ElfClass::Shdr * FindElfSectionByName(const char *name, typename ElfClass::Word section_type, const typename ElfClass::Shdr *sections, const char *section_names, const char *names_end, int nsection)