diff options
Diffstat (limited to 'utils/imxtools/sbtools/elf.c')
-rw-r--r-- | utils/imxtools/sbtools/elf.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/utils/imxtools/sbtools/elf.c b/utils/imxtools/sbtools/elf.c index 226057bc19..a0b249570a 100644 --- a/utils/imxtools/sbtools/elf.c +++ b/utils/imxtools/sbtools/elf.c | |||
@@ -551,6 +551,19 @@ void elf_write_file(struct elf_params_t *params, elf_write_fn_t write, | |||
551 | free(strtbl_content); | 551 | free(strtbl_content); |
552 | } | 552 | } |
553 | 553 | ||
554 | bool elf_guess(elf_read_fn_t read, void *user) | ||
555 | { | ||
556 | /* read header */ | ||
557 | Elf32_Ehdr ehdr; | ||
558 | if(!read(user, 0, &ehdr, sizeof(ehdr))) | ||
559 | return false; | ||
560 | /* basic checks */ | ||
561 | return ehdr.e_ident[EI_MAG0] == ELFMAG0 && ehdr.e_ident[EI_MAG1] == ELFMAG1 && | ||
562 | ehdr.e_ident[EI_MAG2] == ELFMAG2 && ehdr.e_ident[EI_MAG3] == ELFMAG3 && | ||
563 | ehdr.e_ehsize == sizeof(ehdr) && ehdr.e_phentsize == sizeof(Elf32_Phdr) && | ||
564 | ehdr.e_shentsize == sizeof(Elf32_Shdr); | ||
565 | } | ||
566 | |||
554 | bool elf_read_file(struct elf_params_t *params, elf_read_fn_t read, | 567 | bool elf_read_file(struct elf_params_t *params, elf_read_fn_t read, |
555 | elf_printf_fn_t printf, void *user) | 568 | elf_printf_fn_t printf, void *user) |
556 | { | 569 | { |