mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-25 08:47:28 +00:00
readelf: Handle 0 sh_entsize of GOT sections
Gold, lld and mold set sh_entsize to 0 on .got and .got.plt sections. If sh_entsize of GOT sections is 0, assume 8 for ELFCLASS64 and 4 for ELFCLASS32, except for x32 which uses 8. PR binutils/33368 * readelf.c (process_got_section_contents): Handle 0 sh_entsize of GOT sections. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
This commit is contained in:
@@ -21075,6 +21075,25 @@ process_got_section_contents (Filedata * filedata)
|
||||
}
|
||||
|
||||
uint32_t entsz = section->sh_entsize;
|
||||
/* NB: Gold, lld and mold set sh_entsize to 0 on .got and
|
||||
.got.plt sections. */
|
||||
if (entsz == 0)
|
||||
{
|
||||
if (is_32bit_elf)
|
||||
switch (filedata->file_header.e_machine)
|
||||
{
|
||||
default:
|
||||
entsz = 4;
|
||||
break;
|
||||
case EM_X86_64:
|
||||
/* x32 uses 8 byte GOT sh_entsize. */
|
||||
entsz = 8;
|
||||
break;
|
||||
}
|
||||
else
|
||||
entsz = 8;
|
||||
}
|
||||
|
||||
entries = section->sh_size / entsz;
|
||||
if (entries == 1)
|
||||
printf (_("\nGlobal Offset Table '%s' contains 1 entry:\n"),
|
||||
|
||||
Reference in New Issue
Block a user