DIFFERENCE;
}
+ size_t shstrndx1;
+ size_t shstrndx2;
+ if (elf_getshdrstrndx (elf1, &shstrndx1) != 0)
+ error (2, 0, gettext ("cannot get hdrstrndx of '%s': %s"),
+ fname1, elf_errmsg (-1));
+ if (elf_getshdrstrndx (elf2, &shstrndx2) != 0)
+ error (2, 0, gettext ("cannot get hdrstrndx of '%s': %s"),
+ fname2, elf_errmsg (-1));
+ if (shstrndx1 != shstrndx2)
+ {
+ if (! quiet)
+ error (0, 0, gettext ("%s %s diff: shdr string index"),
+ fname1, fname2);
+ DIFFERENCE;
+ }
+
/* Iterate over all sections. We expect the sections in the two
files to match exactly. */
Elf_Scn *scn1 = NULL;
scn1 = elf_nextscn (elf1, scn1);
shdr1 = gelf_getshdr (scn1, &shdr1_mem);
if (shdr1 != NULL)
- sname1 = elf_strptr (elf1, ehdr1->e_shstrndx, shdr1->sh_name);
+ sname1 = elf_strptr (elf1, shstrndx1, shdr1->sh_name);
}
while (scn1 != NULL
&& ebl_section_strip_p (ebl1, shdr1, sname1, true, false));
scn2 = elf_nextscn (elf2, scn2);
shdr2 = gelf_getshdr (scn2, &shdr2_mem);
if (shdr2 != NULL)
- sname2 = elf_strptr (elf2, ehdr2->e_shstrndx, shdr2->sh_name);
+ sname2 = elf_strptr (elf2, shstrndx2, shdr2->sh_name);
}
while (scn2 != NULL
&& ebl_section_strip_p (ebl2, shdr2, sname2, true, false));