--- libelf/elf32_updatenull.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) Index: b/libelf/elf32_updatenull.c =================================================================== --- a/libelf/elf32_updatenull.c +++ b/libelf/elf32_updatenull.c @@ -331,10 +331,11 @@ __elfw2(LIBELFBITS,updatenull) (Elf *elf if (elf->flags & ELF_F_LAYOUT) { - size = MAX ((GElf_Word) size, - shdr->sh_offset - + (shdr->sh_type != SHT_NOBITS - ? shdr->sh_size : 0)); + /* Even the sh_offset is only the "conceptual" possition + in the file. So completely ignore NOBITS sections. */ + if (shdr->sh_type != SHT_NOBITS) + size = MAX ((GElf_Word) size, + shdr->sh_offset + shdr->sh_size); /* The alignment must be a power of two. This is a requirement from the ELF specification. Additionally