diff --git a/src/flash/ecos.c b/src/flash/ecos.c index c12ed9d24..b2ffadffa 100644 --- a/src/flash/ecos.c +++ b/src/flash/ecos.c @@ -152,8 +152,8 @@ FLASH_BANK_COMMAND_HANDLER(ecosflash_flash_bank_command) static int loadDriver(struct ecosflash_flash_bank *info) { - uint32_t buf_cnt; - uint32_t image_size; + size_t buf_cnt; + size_t image_size; struct image image; image.base_address_set = 0; @@ -182,7 +182,8 @@ static int loadDriver(struct ecosflash_flash_bank *info) } target_write_buffer(target, image.sections[i].base_address, buf_cnt, buffer); image_size += buf_cnt; - LOG_DEBUG("%" PRIu32 " byte written at address 0x%8.8" PRIx32 "", buf_cnt, image.sections[i].base_address); + LOG_DEBUG("%zu bytes written at address 0x%8.8" PRIx32 "", + buf_cnt, image.sections[i].base_address); free(buffer); } diff --git a/src/flash/flash.c b/src/flash/flash.c index 03d4547d4..adc141195 100644 --- a/src/flash/flash.c +++ b/src/flash/flash.c @@ -811,7 +811,6 @@ COMMAND_HANDLER(handle_flash_write_bank_command) { uint32_t offset; uint8_t *buffer; - uint32_t buf_cnt; struct fileio fileio; if (argc != 3) @@ -833,6 +832,7 @@ COMMAND_HANDLER(handle_flash_write_bank_command) } buffer = malloc(fileio.size); + size_t buf_cnt; if (fileio_read(&fileio, fileio.size, buffer, &buf_cnt) != ERROR_OK) { free(buffer); @@ -1059,7 +1059,7 @@ static int flash_write_unlock(struct target *target, struct image *image, uint32 /* read sections to the buffer */ while (buffer_size < run_size) { - uint32_t size_read; + size_t size_read; size_read = run_size - buffer_size; if (size_read > image->sections[section].size - section_offset) diff --git a/src/flash/lpc2900.c b/src/flash/lpc2900.c index b80079df0..dc916689d 100644 --- a/src/flash/lpc2900.c +++ b/src/flash/lpc2900.c @@ -631,7 +631,7 @@ COMMAND_HANDLER(lpc2900_handle_read_custom_command) return ret; } - uint32_t nwritten; + size_t nwritten; ret = fileio_write( &fileio, sizeof(customer), (const uint8_t *)customer, &nwritten ); if( ret != ERROR_OK ) @@ -755,7 +755,7 @@ COMMAND_HANDLER(lpc2900_handle_write_custom_command) /* Page 4 */ uint32_t offset = ISS_CUSTOMER_START1 % FLASH_PAGE_SIZE; memset( page, 0xff, FLASH_PAGE_SIZE ); - uint32_t size_read; + size_t size_read; retval = image_read_section( &image, 0, 0, ISS_CUSTOMER_SIZE1, &page[offset], &size_read); if( retval != ERROR_OK ) diff --git a/src/flash/mflash.c b/src/flash/mflash.c index 4356f2709..062064275 100644 --- a/src/flash/mflash.c +++ b/src/flash/mflash.c @@ -705,7 +705,7 @@ static int mg_mflash_write(uint32_t addr, uint8_t *buff, uint32_t len) COMMAND_HANDLER(mg_write_cmd) { - uint32_t address, buf_cnt, cnt, res, i; + uint32_t address, cnt, res, i; uint8_t *buffer; struct fileio fileio; int ret; @@ -732,6 +732,7 @@ COMMAND_HANDLER(mg_write_cmd) struct duration bench; duration_start(&bench); + size_t buf_cnt; for (i = 0; i < cnt; i++) { if ((ret = fileio_read(&fileio, MG_FILEIO_CHUNK, buffer, &buf_cnt)) != ERROR_OK) @@ -769,7 +770,7 @@ mg_write_cmd_err: COMMAND_HANDLER(mg_dump_cmd) { - uint32_t address, size_written, size, cnt, res, i; + uint32_t address, size, cnt, res, i; uint8_t *buffer; struct fileio fileio; int ret; @@ -797,6 +798,7 @@ COMMAND_HANDLER(mg_dump_cmd) struct duration bench; duration_start(&bench); + size_t size_written; for (i = 0; i < cnt; i++) { if ((ret = mg_mflash_read(address, buffer, MG_FILEIO_CHUNK)) != ERROR_OK) goto mg_dump_cmd_err; diff --git a/src/flash/nand.c b/src/flash/nand.c index 9d997fadd..71a67c45b 100644 --- a/src/flash/nand.c +++ b/src/flash/nand.c @@ -1453,8 +1453,8 @@ static COMMAND_HELPER(nand_fileio_parse_args, struct nand_fileio_state *state, static int nand_fileio_read(struct nand_device *nand, struct nand_fileio_state *s) { - uint32_t total_read = 0; - uint32_t one_read; + size_t total_read = 0; + size_t one_read; if (NULL != s->page) { @@ -1616,7 +1616,7 @@ COMMAND_HANDLER(handle_nand_dump_command) while (s.size > 0) { - uint32_t size_written; + size_t size_written; int retval = nand_read_page(nand, s.address / nand->page_size, s.page, s.page_size, s.oob, s.oob_size); if (ERROR_OK != retval) diff --git a/src/helper/fileio.c b/src/helper/fileio.c index 84d46bd57..8f2ce2204 100644 --- a/src/helper/fileio.c +++ b/src/helper/fileio.c @@ -143,7 +143,7 @@ int fileio_close(struct fileio *fileio) return retval; } -int fileio_seek(struct fileio *fileio, uint32_t position) +int fileio_seek(struct fileio *fileio, size_t position) { int retval; if ((retval = fseek(fileio->file, position, SEEK_SET)) != 0) @@ -155,14 +155,16 @@ int fileio_seek(struct fileio *fileio, uint32_t position) return ERROR_OK; } -static inline int fileio_local_read(struct fileio *fileio, uint32_t size, uint8_t *buffer, uint32_t *size_read) +static int fileio_local_read(struct fileio *fileio, + size_t size, void *buffer, size_t *size_read) { - *size_read = fread(buffer, 1, size, fileio->file); - - return ERROR_OK; + ssize_t retval = fread(buffer, 1, size, fileio->file); + *size_read = (retval >= 0) ? retval : 0; + return (retval < 0) ? retval : ERROR_OK; } -int fileio_read(struct fileio *fileio, uint32_t size, uint8_t *buffer, uint32_t *size_read) +int fileio_read(struct fileio *fileio, size_t size, void *buffer, + size_t *size_read) { return fileio_local_read(fileio, size, buffer, size_read); } @@ -170,17 +172,17 @@ int fileio_read(struct fileio *fileio, uint32_t size, uint8_t *buffer, uint32_t int fileio_read_u32(struct fileio *fileio, uint32_t *data) { uint8_t buf[4]; - uint32_t size_read; - int retval; - - if ((retval = fileio_local_read(fileio, 4, buf, &size_read)) != ERROR_OK) - return retval; - *data = be_to_h_u32(buf); - - return ERROR_OK; + size_t size_read; + int retval = fileio_local_read(fileio, sizeof(uint32_t), buf, &size_read); + if (ERROR_OK == retval && sizeof(uint32_t) != size_read) + retval = -EIO; + if (ERROR_OK == retval) + *data = be_to_h_u32(buf); + return retval; } -static inline int fileio_local_fgets(struct fileio *fileio, uint32_t size, char *buffer) +static int fileio_local_fgets(struct fileio *fileio, + size_t size, void *buffer) { if (fgets(buffer, size, fileio->file) == NULL) return ERROR_FILEIO_OPERATION_FAILED; @@ -188,40 +190,37 @@ static inline int fileio_local_fgets(struct fileio *fileio, uint32_t size, char return ERROR_OK; } -int fileio_fgets(struct fileio *fileio, uint32_t size, char *buffer) +int fileio_fgets(struct fileio *fileio, size_t size, void *buffer) { return fileio_local_fgets(fileio, size, buffer); } -static inline int fileio_local_write(struct fileio *fileio, uint32_t size, const uint8_t *buffer, uint32_t *size_written) +static int fileio_local_write(struct fileio *fileio, + size_t size, const void *buffer, size_t *size_written) { - *size_written = fwrite(buffer, 1, size, fileio->file); - - return ERROR_OK; + ssize_t retval = fwrite(buffer, 1, size, fileio->file); + *size_written = (retval >= 0) ? retval : 0; + return (retval < 0) ? retval : ERROR_OK; } -int fileio_write(struct fileio *fileio, uint32_t size, const uint8_t *buffer, uint32_t *size_written) +int fileio_write(struct fileio *fileio, + size_t size, const void *buffer, size_t *size_written) { - int retval; - - retval = fileio_local_write(fileio, size, buffer, size_written); - + int retval = fileio_local_write(fileio, size, buffer, size_written); if (retval == ERROR_OK) fileio->size += *size_written; - - return retval;; + return retval; } int fileio_write_u32(struct fileio *fileio, uint32_t data) { uint8_t buf[4]; - uint32_t size_written; - int retval; - h_u32_to_be(buf, data); - if ((retval = fileio_local_write(fileio, 4, buf, &size_written)) != ERROR_OK) - return retval; + size_t size_written; + int retval = fileio_write(fileio, 4, buf, &size_written); + if (ERROR_OK == retval && size_written != sizeof(uint32_t)) + retval = -EIO; - return ERROR_OK; + return retval; } diff --git a/src/helper/fileio.h b/src/helper/fileio.h index 6ed6fe454..325b441ff 100644 --- a/src/helper/fileio.h +++ b/src/helper/fileio.h @@ -58,13 +58,13 @@ int fileio_open(struct fileio *fileio, const char *url, enum fileio_access access, enum fileio_type type); int fileio_close(struct fileio *fileio); -int fileio_seek(struct fileio *fileio, uint32_t position); -int fileio_fgets(struct fileio *fileio, uint32_t size, char *buffer); +int fileio_seek(struct fileio *fileio, size_t position); +int fileio_fgets(struct fileio *fileio, size_t size, void *buffer); int fileio_read(struct fileio *fileio, - uint32_t size, uint8_t *buffer, uint32_t *size_read); + size_t size, void *buffer, size_t *size_read); int fileio_write(struct fileio *fileio, - uint32_t size, const uint8_t *buffer, uint32_t *size_written); + size_t size, const void *buffer, size_t *size_written); int fileio_read_u32(struct fileio *fileio, uint32_t *data); int fileio_write_u32(struct fileio *fileio, uint32_t data); diff --git a/src/target/etm.c b/src/target/etm.c index 5a0ffed55..fa7a71b2c 100644 --- a/src/target/etm.c +++ b/src/target/etm.c @@ -640,7 +640,7 @@ static int etm_read_instruction(struct etm_context *ctx, struct arm_instruction { int i; int section = -1; - uint32_t size_read; + size_t size_read; uint32_t opcode; int retval; diff --git a/src/target/image.c b/src/target/image.c index bba4675ff..8774c2517 100644 --- a/src/target/image.c +++ b/src/target/image.c @@ -48,7 +48,7 @@ static int autodetect_image_type(struct image *image, const char *url) { int retval; struct fileio fileio; - uint32_t read_bytes; + size_t read_bytes; uint8_t buffer[9]; /* read the first 4 bytes of image */ @@ -175,7 +175,7 @@ static int image_ihex_buffer_complete(struct image *image) uint32_t record_type; uint32_t checksum; uint8_t cal_checksum = 0; - uint32_t bytes_read = 0; + size_t bytes_read = 0; if (sscanf(&lpszLine[bytes_read], ":%2" SCNx32 "%4" SCNx32 "%2" SCNx32 , &count, &address, &record_type) != 3) { @@ -360,7 +360,7 @@ static int image_ihex_buffer_complete(struct image *image) static int image_elf_read_headers(struct image *image) { struct image_elf *elf = image->type_private; - uint32_t read_bytes; + size_t read_bytes; uint32_t i,j; int retval; @@ -458,11 +458,11 @@ static int image_elf_read_headers(struct image *image) return ERROR_OK; } -static int image_elf_read_section(struct image *image, int section, uint32_t offset, uint32_t size, uint8_t *buffer, uint32_t *size_read) +static int image_elf_read_section(struct image *image, int section, uint32_t offset, uint32_t size, uint8_t *buffer, size_t *size_read) { struct image_elf *elf = image->type_private; Elf32_Phdr *segment = (Elf32_Phdr *)image->sections[section].private; - uint32_t read_size,really_read; + size_t read_size,really_read; int retval; *size_read = 0; @@ -474,7 +474,7 @@ static int image_elf_read_section(struct image *image, int section, uint32_t off { /* maximal size present in file for the current segment */ read_size = MIN(size, field32(elf,segment->p_filesz)-offset); - LOG_DEBUG("read elf: size = 0x%" PRIx32 " at 0x%" PRIx32 "",read_size, + LOG_DEBUG("read elf: size = 0x%zu at 0x%" PRIx32 "", read_size, field32(elf,segment->p_offset) + offset); /* read initialized area of the segment */ if ((retval = fileio_seek(&elf->fileio, field32(elf,segment->p_offset) + offset)) != ERROR_OK) @@ -797,7 +797,7 @@ int image_open(struct image *image, const char *url, const char *type_string) return retval; }; -int image_read_section(struct image *image, int section, uint32_t offset, uint32_t size, uint8_t *buffer, uint32_t *size_read) +int image_read_section(struct image *image, int section, uint32_t offset, uint32_t size, uint8_t *buffer, size_t *size_read) { int retval; diff --git a/src/target/image.h b/src/target/image.h index 06d47bf87..0dac5baed 100644 --- a/src/target/image.h +++ b/src/target/image.h @@ -102,7 +102,7 @@ struct image_mot int image_open(struct image *image, const char *url, const char *type_string); int image_read_section(struct image *image, int section, uint32_t offset, - uint32_t size, uint8_t *buffer, uint32_t *size_read); + uint32_t size, uint8_t *buffer, size_t *size_read); void image_close(struct image *image); int image_add_section(struct image *image, uint32_t base, uint32_t size, diff --git a/src/target/target.c b/src/target/target.c index f141e933f..c00c2ed9d 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -2399,7 +2399,7 @@ static COMMAND_HELPER(parse_load_image_command_args, struct image *image, COMMAND_HANDLER(handle_load_image_command) { uint8_t *buffer; - uint32_t buf_cnt; + size_t buf_cnt; uint32_t image_size; uint32_t min_address = 0; uint32_t max_address = 0xffffffff; @@ -2519,7 +2519,7 @@ COMMAND_HANDLER(handle_dump_image_command) int retval = ERROR_OK; while (size > 0) { - uint32_t size_written; + size_t size_written; uint32_t this_run_size = (size > 560) ? 560 : size; retval = target_read_buffer(target, address, this_run_size, buffer); if (retval != ERROR_OK) @@ -2553,7 +2553,7 @@ COMMAND_HANDLER(handle_dump_image_command) static COMMAND_HELPER(handle_verify_image_command_internal, int verify) { uint8_t *buffer; - uint32_t buf_cnt; + size_t buf_cnt; uint32_t image_size; int i; int retval; @@ -2674,7 +2674,7 @@ static COMMAND_HELPER(handle_verify_image_command_internal, int verify) } } else { - command_print(cmd_ctx, "address 0x%08" PRIx32 " length 0x%08" PRIx32 "", + command_print(cmd_ctx, "address 0x%08" PRIx32 " length 0x%08zx", image.sections[i].base_address, buf_cnt); } @@ -4537,7 +4537,7 @@ static void free_fastload(void) COMMAND_HANDLER(handle_fast_load_image_command) { uint8_t *buffer; - uint32_t buf_cnt; + size_t buf_cnt; uint32_t image_size; uint32_t min_address = 0; uint32_t max_address = 0xffffffff; diff --git a/src/target/xscale.c b/src/target/xscale.c index 30ca3bf32..9e93c020c 100644 --- a/src/target/xscale.c +++ b/src/target/xscale.c @@ -2557,7 +2557,7 @@ static int xscale_read_instruction(struct target *target, struct xscale_common *xscale = target_to_xscale(target); int i; int section = -1; - uint32_t size_read; + size_t size_read; uint32_t opcode; int retval;