1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #ifndef BASE_DEBUG_ELF_READER_H_
- #define BASE_DEBUG_ELF_READER_H_
- #include <elf.h>
- #include "base/base_export.h"
- #include "base/containers/span.h"
- #include "base/hash/sha1.h"
- #include "base/optional.h"
- #include "base/strings/string_piece.h"
- #if __SIZEOF_POINTER__ == 4
- using Phdr = Elf32_Phdr;
- #else
- using Phdr = Elf64_Phdr;
- #endif
- namespace base {
- namespace debug {
- constexpr size_t kMaxBuildIdStringLength = kSHA1Length * 2;
- using ElfBuildIdBuffer = char[kMaxBuildIdStringLength + 1];
- size_t BASE_EXPORT ReadElfBuildId(const void* elf_mapped_base,
- bool uppercase,
- ElfBuildIdBuffer build_id);
- Optional<StringPiece> BASE_EXPORT
- ReadElfLibraryName(const void* elf_mapped_base);
- span<const Phdr> BASE_EXPORT GetElfProgramHeaders(const void* elf_mapped_base);
- size_t BASE_EXPORT GetRelocationOffset(const void* elf_mapped_base);
- }
- }
- #endif
|