diff options
Diffstat (limited to 'utils/imxtools/sbtools/sbtoelf.c')
-rw-r--r-- | utils/imxtools/sbtools/sbtoelf.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/utils/imxtools/sbtools/sbtoelf.c b/utils/imxtools/sbtools/sbtoelf.c index a13e18b81d..95fc7381a9 100644 --- a/utils/imxtools/sbtools/sbtoelf.c +++ b/utils/imxtools/sbtools/sbtoelf.c | |||
@@ -107,16 +107,20 @@ static void extract_sb_section(struct sb_section_t *sec) | |||
107 | struct elf_params_t elf; | 107 | struct elf_params_t elf; |
108 | elf_init(&elf); | 108 | elf_init(&elf); |
109 | 109 | ||
110 | int bss_idx = 0, text_idx = 0; | ||
111 | char secname[32]; | ||
110 | for(int i = 0; i < sec->nr_insts; i++) | 112 | for(int i = 0; i < sec->nr_insts; i++) |
111 | { | 113 | { |
112 | struct sb_inst_t *inst = &sec->insts[i]; | 114 | struct sb_inst_t *inst = &sec->insts[i]; |
113 | switch(inst->inst) | 115 | switch(inst->inst) |
114 | { | 116 | { |
115 | case SB_INST_LOAD: | 117 | case SB_INST_LOAD: |
116 | elf_add_load_section(&elf, inst->addr, inst->size, inst->data); | 118 | sprintf(secname, ".text%d", text_idx++); |
119 | elf_add_load_section(&elf, inst->addr, inst->size, inst->data, secname); | ||
117 | break; | 120 | break; |
118 | case SB_INST_FILL: | 121 | case SB_INST_FILL: |
119 | elf_add_fill_section(&elf, inst->addr, inst->size, inst->pattern); | 122 | sprintf(secname, ".bss%d", bss_idx++); |
123 | elf_add_fill_section(&elf, inst->addr, inst->size, inst->pattern, secname); | ||
120 | break; | 124 | break; |
121 | case SB_INST_CALL: | 125 | case SB_INST_CALL: |
122 | case SB_INST_JUMP: | 126 | case SB_INST_JUMP: |
@@ -124,6 +128,7 @@ static void extract_sb_section(struct sb_section_t *sec) | |||
124 | extract_elf_section(&elf, elf_count++, sec->identifier); | 128 | extract_elf_section(&elf, elf_count++, sec->identifier); |
125 | elf_release(&elf); | 129 | elf_release(&elf); |
126 | elf_init(&elf); | 130 | elf_init(&elf); |
131 | bss_idx = text_idx = 0; | ||
127 | break; | 132 | break; |
128 | default: | 133 | default: |
129 | /* ignore mode and nop */ | 134 | /* ignore mode and nop */ |
@@ -166,16 +171,20 @@ static void extract_sb1_file(struct sb1_file_t *file) | |||
166 | struct elf_params_t elf; | 171 | struct elf_params_t elf; |
167 | elf_init(&elf); | 172 | elf_init(&elf); |
168 | 173 | ||
174 | int bss_idx = 0, text_idx = 0; | ||
175 | char secname[32]; | ||
169 | for(int i = 0; i < file->nr_insts; i++) | 176 | for(int i = 0; i < file->nr_insts; i++) |
170 | { | 177 | { |
171 | struct sb1_inst_t *inst = &file->insts[i]; | 178 | struct sb1_inst_t *inst = &file->insts[i]; |
172 | switch(inst->cmd) | 179 | switch(inst->cmd) |
173 | { | 180 | { |
174 | case SB1_INST_LOAD: | 181 | case SB1_INST_LOAD: |
175 | elf_add_load_section(&elf, inst->addr, inst->size, inst->data); | 182 | sprintf(secname, ".text%d", text_idx++); |
183 | elf_add_load_section(&elf, inst->addr, inst->size, inst->data, secname); | ||
176 | break; | 184 | break; |
177 | case SB1_INST_FILL: | 185 | case SB1_INST_FILL: |
178 | elf_add_fill_section(&elf, inst->addr, inst->size, inst->pattern); | 186 | sprintf(secname, ".bss%d", bss_idx++); |
187 | elf_add_fill_section(&elf, inst->addr, inst->size, inst->pattern, secname); | ||
179 | break; | 188 | break; |
180 | case SB1_INST_CALL: | 189 | case SB1_INST_CALL: |
181 | case SB1_INST_JUMP: | 190 | case SB1_INST_JUMP: |