diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2013-08-04 15:03:29 +0200 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2013-08-06 21:24:38 +0200 |
commit | e4c9eaa7e8f247eb0623350e5d15d542ca665e17 (patch) | |
tree | 2d169448038eb4767a730c5cb8bb38dd1b2f7ec6 /utils/imxtools/sbtools/elf.c | |
parent | 76446dda459e2696d2a772d77ab4ed585901de13 (diff) | |
download | rockbox-e4c9eaa7e8f247eb0623350e5d15d542ca665e17.tar.gz rockbox-e4c9eaa7e8f247eb0623350e5d15d542ca665e17.zip |
sbtools: add helper to determine if a file is a valid ELF image
Change-Id: Ie0e9c05569ca9b02fd36f31fd7323f02b14e1b60
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 | { |