diff options
Diffstat (limited to 'utils/imxtools')
-rw-r--r-- | utils/imxtools/sbtools/elf.c | 13 | ||||
-rw-r--r-- | utils/imxtools/sbtools/elf.h | 2 |
2 files changed, 15 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 | { |
diff --git a/utils/imxtools/sbtools/elf.h b/utils/imxtools/sbtools/elf.h index 403bab0712..cabe764e45 100644 --- a/utils/imxtools/sbtools/elf.h +++ b/utils/imxtools/sbtools/elf.h | |||
@@ -94,6 +94,8 @@ bool elf_get_start_addr(struct elf_params_t *params, uint32_t *addr); | |||
94 | int elf_get_nr_sections(struct elf_params_t *params); | 94 | int elf_get_nr_sections(struct elf_params_t *params); |
95 | void elf_release(struct elf_params_t *params); | 95 | void elf_release(struct elf_params_t *params); |
96 | 96 | ||
97 | bool elf_guess(elf_read_fn_t read, void *user); | ||
98 | |||
97 | /* standard implementation of read/write/printf functions | 99 | /* standard implementation of read/write/printf functions |
98 | * with user being a FILE* pointer */ | 100 | * with user being a FILE* pointer */ |
99 | void elf_std_printf(void *user, bool error, const char *fmt, ...); | 101 | void elf_std_printf(void *user, bool error, const char *fmt, ...); |