diff options
Diffstat (limited to 'libelf/elf32_getshdr.c')
-rw-r--r-- | libelf/elf32_getshdr.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libelf/elf32_getshdr.c b/libelf/elf32_getshdr.c index 3a6375c1..237d9122 100644 --- a/libelf/elf32_getshdr.c +++ b/libelf/elf32_getshdr.c @@ -99,6 +99,7 @@ load_shdr_wrlock (Elf_Scn *scn) assert ((elf->flags & ELF_F_MALLOCED) || ehdr->e_ident[EI_DATA] != MY_ELFDATA + || elf->cmd == ELF_C_READ_MMAP || (! ALLOW_UNALIGNED && ((uintptr_t) file_shdr & (__alignof__ (ElfW2(LIBELFBITS,Shdr)) - 1)) != 0)); @@ -106,7 +107,9 @@ load_shdr_wrlock (Elf_Scn *scn) /* Now copy the data and at the same time convert the byte order. */ if (ehdr->e_ident[EI_DATA] == MY_ELFDATA) { - assert ((elf->flags & ELF_F_MALLOCED) || ! ALLOW_UNALIGNED); + assert ((elf->flags & ELF_F_MALLOCED) + || elf->cmd == ELF_C_READ_MMAP + || ! ALLOW_UNALIGNED); memcpy (shdr, file_shdr, size); } else |