return ERROR_OK;
}
-static int image_ihex_buffer_complete_inner(struct image *image, char *lpszLine, struct imageection *section)
+static int image_ihex_buffer_complete_inner(struct image *image, char *lpszLine, struct imagesection *section)
{
struct image_ihex *ihex = image->type_private;
struct fileio *fileio = &ihex->fileio;
/* we can't determine the number of sections that we'll have to create ahead of time,
* so we locally hold them until parsing is finished */
- ihex->buffer = malloc(fileio->size >> 1);
+ int filesize;
+ int retval;
+ retval = fileio_size(fileio, &filesize);
+ if (retval != ERROR_OK)
+ return retval;
+
+ ihex->buffer = malloc(filesize >> 1);
cooked_bytes = 0x0;
image->num_sections = 0;
section[image->num_sections].private = &ihex->buffer[cooked_bytes];
image->num_sections++;
/* copy section information */
- image->sections = malloc(sizeof(struct imageection) * image->num_sections);
+ image->sections = malloc(sizeof(struct imagesection) * image->num_sections);
for (i = 0; i < image->num_sections; i++)
{
image->sections[i].private = section[i].private;
LOG_ERROR("Out of memory");
return ERROR_FAIL;
}
- struct imageection *section = malloc(sizeof(struct imageection) * IMAGE_MAX_SECTIONS);
+ struct imagesection *section = malloc(sizeof(struct imagesection) * IMAGE_MAX_SECTIONS);
if (section == NULL)
{
free(lpszLine);
if ((field32(elf, elf->segments[i].p_type) == PT_LOAD) && (field32(elf, elf->segments[i].p_filesz) != 0))
image->num_sections++;
/* alloc and fill sections array with loadable segments */
- image->sections = malloc(image->num_sections * sizeof(struct imageection));
+ image->sections = malloc(image->num_sections * sizeof(struct imagesection));
for (i = 0,j = 0;i < elf->segment_count;i++)
{
if ((field32(elf, elf->segments[i].p_type) == PT_LOAD) && (field32(elf, elf->segments[i].p_filesz) != 0))
return ERROR_OK;
}
-static int image_mot_buffer_complete_inner(struct image *image, char *lpszLine, struct imageection *section)
+static int image_mot_buffer_complete_inner(struct image *image, char *lpszLine, struct imagesection *section)
{
struct image_mot *mot = image->type_private;
struct fileio *fileio = &mot->fileio;
/* we can't determine the number of sections that we'll have to create ahead of time,
* so we locally hold them until parsing is finished */
- mot->buffer = malloc(fileio->size >> 1);
+ int retval;
+ int filesize;
+ retval = fileio_size(fileio, &filesize);
+ if (retval != ERROR_OK)
+ return retval;
+
+ mot->buffer = malloc(filesize >> 1);
cooked_bytes = 0x0;
image->num_sections = 0;
section[image->num_sections].private = &mot->buffer[cooked_bytes];
image->num_sections++;
/* copy section information */
- image->sections = malloc(sizeof(struct imageection) * image->num_sections);
+ image->sections = malloc(sizeof(struct imagesection) * image->num_sections);
for (i = 0; i < image->num_sections; i++)
{
image->sections[i].private = section[i].private;
LOG_ERROR("Out of memory");
return ERROR_FAIL;
}
- struct imageection *section = malloc(sizeof(struct imageection) * IMAGE_MAX_SECTIONS);
+ struct imagesection *section = malloc(sizeof(struct imagesection) * IMAGE_MAX_SECTIONS);
if (section == NULL)
{
free(lpszLine);
{
return retval;
}
+ int filesize;
+ retval = fileio_size(&image_binary->fileio, &filesize);
+ if (retval != ERROR_OK)
+ {
+ fileio_close(&image_binary->fileio);
+ return retval;
+ }
image->num_sections = 1;
- image->sections = malloc(sizeof(struct imageection));
+ image->sections = malloc(sizeof(struct imagesection));
image->sections[0].base_address = 0x0;
- image->sections[0].size = image_binary->fileio.size;
+ image->sections[0].size = filesize;
image->sections[0].flags = 0;
}
else if (image->type == IMAGE_IHEX)
struct image_memory *image_memory;
image->num_sections = 1;
- image->sections = malloc(sizeof(struct imageection));
+ image->sections = malloc(sizeof(struct imagesection));
image->sections[0].base_address = 0x0;
image->sections[0].size = 0xffffffff;
image->sections[0].flags = 0;
int image_add_section(struct image *image, uint32_t base, uint32_t size, int flags, uint8_t *data)
{
- struct imageection *section;
+ struct imagesection *section;
/* only image builder supports adding sections */
if (image->type != IMAGE_BUILDER)
/* allocate new section */
image->num_sections++;
- image->sections = realloc(image->sections, sizeof(struct imageection) * image->num_sections);
+ image->sections = realloc(image->sections, sizeof(struct imagesection) * image->num_sections);
section = &image->sections[image->num_sections - 1];
section->base_address = base;
section->size = size;