diff options
-rw-r--r-- | utils/imxtools/sbtools/elf.c | 15 | ||||
-rw-r--r-- | utils/imxtools/sbtools/elf.h | 1 | ||||
-rw-r--r-- | utils/imxtools/sbtools/elftosb.c | 1 | ||||
-rw-r--r-- | utils/imxtools/sbtools/elftosb1.c | 2 |
4 files changed, 3 insertions, 16 deletions
diff --git a/utils/imxtools/sbtools/elf.c b/utils/imxtools/sbtools/elf.c index adf876e5c7..5017251da3 100644 --- a/utils/imxtools/sbtools/elf.c +++ b/utils/imxtools/sbtools/elf.c | |||
@@ -519,8 +519,8 @@ void elf_write_file(struct elf_params_t *params, elf_write_fn_t write, | |||
519 | phdr.p_offset = sec->offset; | 519 | phdr.p_offset = sec->offset; |
520 | else | 520 | else |
521 | phdr.p_offset = 0; | 521 | phdr.p_offset = 0; |
522 | phdr.p_paddr = sec->addr; | 522 | phdr.p_paddr = elf_translate_virtual_address(params, sec->addr); |
523 | phdr.p_vaddr = phdr.p_paddr; /* assume identity map ? */ | 523 | phdr.p_vaddr = sec->addr; /* assume identity map ? */ |
524 | phdr.p_memsz = sec->size; | 524 | phdr.p_memsz = sec->size; |
525 | if(sec->type == EST_LOAD) | 525 | if(sec->type == EST_LOAD) |
526 | phdr.p_filesz = phdr.p_memsz; | 526 | phdr.p_filesz = phdr.p_memsz; |
@@ -795,17 +795,6 @@ uint32_t elf_translate_virtual_address(struct elf_params_t *params, uint32_t add | |||
795 | return addr; | 795 | return addr; |
796 | } | 796 | } |
797 | 797 | ||
798 | void elf_translate_addresses(struct elf_params_t *params) | ||
799 | { | ||
800 | struct elf_section_t *sec = params->first_section; | ||
801 | while(sec) | ||
802 | { | ||
803 | sec->addr = elf_translate_virtual_address(params, sec->addr); | ||
804 | sec = sec->next; | ||
805 | } | ||
806 | params->start_addr = elf_translate_virtual_address(params, params->start_addr); | ||
807 | } | ||
808 | |||
809 | bool elf_is_empty(struct elf_params_t *params) | 798 | bool elf_is_empty(struct elf_params_t *params) |
810 | { | 799 | { |
811 | return params->first_section == NULL; | 800 | return params->first_section == NULL; |
diff --git a/utils/imxtools/sbtools/elf.h b/utils/imxtools/sbtools/elf.h index 09cbe251a1..4200850e74 100644 --- a/utils/imxtools/sbtools/elf.h +++ b/utils/imxtools/sbtools/elf.h | |||
@@ -101,7 +101,6 @@ void elf_add_load_section(struct elf_params_t *params, | |||
101 | void elf_add_fill_section(struct elf_params_t *params, | 101 | void elf_add_fill_section(struct elf_params_t *params, |
102 | uint32_t fill_addr, uint32_t size, uint32_t pattern, const char *name); | 102 | uint32_t fill_addr, uint32_t size, uint32_t pattern, const char *name); |
103 | uint32_t elf_translate_virtual_address(struct elf_params_t *params, uint32_t addr); | 103 | uint32_t elf_translate_virtual_address(struct elf_params_t *params, uint32_t addr); |
104 | void elf_translate_addresses(struct elf_params_t *params); | ||
105 | void elf_simplify(struct elf_params_t *params); | 104 | void elf_simplify(struct elf_params_t *params); |
106 | void elf_sort_by_address(struct elf_params_t *params); | 105 | void elf_sort_by_address(struct elf_params_t *params); |
107 | void elf_write_file(struct elf_params_t *params, elf_write_fn_t write, elf_printf_fn_t printf, void *user); | 106 | void elf_write_file(struct elf_params_t *params, elf_write_fn_t write, elf_printf_fn_t printf, void *user); |
diff --git a/utils/imxtools/sbtools/elftosb.c b/utils/imxtools/sbtools/elftosb.c index a18bad6437..e264337d11 100644 --- a/utils/imxtools/sbtools/elftosb.c +++ b/utils/imxtools/sbtools/elftosb.c | |||
@@ -88,7 +88,6 @@ static void load_elf_by_id(struct cmd_file_t *cmd_file, const char *id) | |||
88 | fclose(fd); | 88 | fclose(fd); |
89 | if(!src->loaded) | 89 | if(!src->loaded) |
90 | bug("error loading elf file '%s' (id '%s')\n", src->filename, id); | 90 | bug("error loading elf file '%s' (id '%s')\n", src->filename, id); |
91 | elf_translate_addresses(&src->elf); | ||
92 | } | 91 | } |
93 | 92 | ||
94 | static void load_bin_by_id(struct cmd_file_t *cmd_file, const char *id) | 93 | static void load_bin_by_id(struct cmd_file_t *cmd_file, const char *id) |
diff --git a/utils/imxtools/sbtools/elftosb1.c b/utils/imxtools/sbtools/elftosb1.c index 79b7621844..43f9b1e9be 100644 --- a/utils/imxtools/sbtools/elftosb1.c +++ b/utils/imxtools/sbtools/elftosb1.c | |||
@@ -19,6 +19,7 @@ | |||
19 | * | 19 | * |
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | 21 | ||
22 | #define _POSIX_C_SOURCE 200809L /* for strdup */ | ||
22 | #include <stdio.h> | 23 | #include <stdio.h> |
23 | #include <errno.h> | 24 | #include <errno.h> |
24 | #include <stdlib.h> | 25 | #include <stdlib.h> |
@@ -405,7 +406,6 @@ static int load_elf(struct sb1_file_t *sb, const char *filename, int act) | |||
405 | fclose(fd); | 406 | fclose(fd); |
406 | if(!loaded) | 407 | if(!loaded) |
407 | bug("error loading elf file '%s'\n", filename); | 408 | bug("error loading elf file '%s'\n", filename); |
408 | elf_translate_addresses(&elf); | ||
409 | elf_sort_by_address(&elf); | 409 | elf_sort_by_address(&elf); |
410 | 410 | ||
411 | struct elf_section_t *esec = elf.first_section; | 411 | struct elf_section_t *esec = elf.first_section; |