// ELF Header
GElf_Ehdr ehdr;
+ // Strings
+ size_t shstrndx;
+
// GNU Build ID
char* build_id;
return -EINVAL;
}
+ // Find the strings
+ r = elf_getshdrstrndx(self->elf, &self->shstrndx);
+ if (r < 0) {
+ ERROR(self->ctx, "elf_getshdrstrndx() failed: %s\n", elf_errmsg(-1));
+ return -EINVAL;
+ }
+
return 0;
}
const char* sname = NULL;
Elf_Scn* s = NULL;
GElf_Shdr shdr;
- int r;
-
- size_t shstrndx = 0;
-
- // Find the strings
- r = elf_getshdrstrndx(self->elf, &shstrndx);
- if (r < 0) {
- ERROR(self->ctx, "elf_getshdrstrndx() failed: %s\n", elf_errmsg(-1));
- return r;
- }
// Walk through all sections
for (;;) {
if (shdr.sh_type == type) {
// If we have a name, check it too
if (name) {
- sname = elf_strptr(self->elf, shstrndx, shdr.sh_name);
+ sname = elf_strptr(self->elf, self->shstrndx, shdr.sh_name);
if (!sname)
continue;