- image.c and fileio.c now uses logging to propagate error strings.
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Fri, 29 Feb 2008 11:42:37 +0000 (11:42 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Fri, 29 Feb 2008 11:42:37 +0000 (11:42 +0000)
 More precise, less code.
- removed unused code in fileio.c
- Windows should now find debug_handler.bin

git-svn-id: svn://svn.berlios.de/openocd/trunk@390 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/flash/ecos.c
src/flash/flash.c
src/flash/nand.c
src/helper/fileio.c
src/helper/fileio.h
src/target/arm7_9_common.c
src/target/etm.c
src/target/image.c
src/target/image.h
src/target/xscale.c

index 5994660ceea3fbec5603924826348a73fc0325a3..57c760fd1abb366376d25706e696c224e80b393b 100644 (file)
@@ -196,7 +196,6 @@ int loadDriver(ecosflash_flash_bank_t *info)
        
        if (image_open(&image, info->driverPath, NULL) != ERROR_OK)
        {
-               ERROR("load_image error: %s", image.error_str);
                return ERROR_FLASH_BANK_INVALID;
        }
        
index d61ecf20dac9ef6782ea1c381e1670890f0cb652..db4449d51720d8cbaf83c9df3592342749c3c05d 100644 (file)
@@ -605,7 +605,6 @@ int handle_flash_write_image_command(struct command_context_s *cmd_ctx, char *cm
        retval = image_open(&image, args[0], (argc == 3) ? args[2] : NULL);
        if (retval != ERROR_OK)
        {
-               command_print(cmd_ctx, "image_open error: %s", image.error_str);
                return retval;
        }
 
@@ -662,14 +661,12 @@ int handle_flash_write_bank_command(struct command_context_s *cmd_ctx, char *cmd
 
        if (fileio_open(&fileio, args[1], FILEIO_READ, FILEIO_BINARY) != ERROR_OK)
        {
-               command_print(cmd_ctx, "flash write_binary error: %s", fileio.error_str);
                return ERROR_OK;
        }
 
        buffer = malloc(fileio.size);
        if (fileio_read(&fileio, fileio.size, buffer, &buf_cnt) != ERROR_OK)
        {
-               command_print(cmd_ctx, "flash write_binary error: %s", fileio.error_str);
                return ERROR_OK;
        }
 
index 8ce7cf0acec47ce186e11554b89d7a90515ae94c..d0e1d8df4bb5ce4ab3b05ef9da10fb1e6edc61c1 100644 (file)
@@ -1271,7 +1271,6 @@ int handle_nand_write_command(struct command_context_s *cmd_ctx, char *cmd, char
                
                if (fileio_open(&fileio, args[1], FILEIO_READ, FILEIO_BINARY) != ERROR_OK)
                {
-                       command_print(cmd_ctx, "file open error: %s", fileio.error_str);
                        return ERROR_OK;
                }
        
@@ -1411,7 +1410,6 @@ int handle_nand_dump_command(struct command_context_s *cmd_ctx, char *cmd, char
                        
                        if (fileio_open(&fileio, args[1], FILEIO_WRITE, FILEIO_BINARY) != ERROR_OK)
                        {
-                               command_print(cmd_ctx, "dump_image error: %s", fileio.error_str);
                                return ERROR_OK;
                        }
        
index 07eae786fd22f0480af934cc7f5b3cf8442e0b72..bb10dbd1331f6c9d3b5400d40c50c208fd39f84f 100644 (file)
@@ -24,6 +24,7 @@
 #include "types.h"
 #include "replacements.h"
 #include "log.h"
+#include "configuration.h"
 
 #include "fileio.h"
 
@@ -41,7 +42,6 @@ int fileio_dispatch_read(fileio_t *fileio, u32 size, u8 *buffer, u32 *size_read)
 
 int fileio_open_local(fileio_t *fileio)
 {
-       fileio_local_t *fileio_local = malloc(sizeof(fileio_local_t));
        char access[4];
        
        switch (fileio->access)
@@ -62,11 +62,10 @@ int fileio_open_local(fileio_t *fileio)
                        strcpy(access, "a+");   
                        break;
                default:
-                       free(fileio_local);
                        ERROR("BUG: access neither read, write nor readwrite");
                        return ERROR_INVALID_ARGUMENTS;
        }
-
+       
        /* win32 always opens in binary mode */
 #ifndef _WIN32
        if (fileio->type == FILEIO_BINARY)
@@ -75,10 +74,9 @@ int fileio_open_local(fileio_t *fileio)
                strcat(access, "b");
        }
        
-       if (!(fileio_local->file = fopen(fileio->url, access)))
+       if (!(fileio->file = open_file_from_path (fileio->url, access)))
        {
-               free(fileio_local);
-               snprintf(fileio->error_str, FILEIO_MAX_ERROR_STRING, "couldn't open %s", fileio->url);
+               ERROR("couldn't open %s", fileio->url);
                return ERROR_FILEIO_OPERATION_FAILED;
        }
        
@@ -89,13 +87,13 @@ int fileio_open_local(fileio_t *fileio)
                 * that refers to e.g. a tftp client */
                int result, result2;
                
-               result = fseek(fileio_local->file, 0, SEEK_END);
-               
-               fileio->size = ftell(fileio_local->file);
+               result = fseek(fileio->file, 0, SEEK_END);
+
+               fileio->size = ftell(fileio->file);
                
-               result2 = fseek(fileio_local->file, 0, SEEK_SET); 
+               result2 = fseek(fileio->file, 0, SEEK_SET); 
                        
-               if ((fileio->size < 0) || (result < 0) || (result2 < 0))
+               if ((fileio->size<0)||(result<0)||(result2<0))
                {
                        fileio_close(fileio);
                        return ERROR_FILEIO_OPERATION_FAILED;
@@ -106,78 +104,39 @@ int fileio_open_local(fileio_t *fileio)
                fileio->size = 0x0;
        }
        
-       fileio->location_private = fileio_local;
-       
        return ERROR_OK;
 }
 
 int fileio_open(fileio_t *fileio, char *url, enum fileio_access access,        enum fileio_type type)
 {
        int retval = ERROR_OK;
-       char *resource_identifier = NULL;
 
-       /* try to identify file location. We only hijack the file paths we understand, the rest is
-        * passed on to the OS which might implement e.g. tftp via a mounted tftp device.
-        */
-       if ((resource_identifier = strstr(url, "bootp://")) && (resource_identifier == url))
-       {
-               ERROR("bootp resource location isn't supported yet");
-               return ERROR_FILEIO_RESOURCE_TYPE_UNKNOWN;
-       }
-       else
-       {
-               /* default to local files */
-               fileio->location = FILEIO_LOCAL;
-       }
-       
        fileio->type = type;
        fileio->access = access;
        fileio->url = strdup(url);
        
-       switch (fileio->location)
-       {
-               case FILEIO_LOCAL:
-                       retval = fileio_open_local(fileio);
-                       break;
-               default:
-                       ERROR("BUG: should never get here");
-                       exit(-1);
-       }
-       
-       if (retval != ERROR_OK)
-               return retval;
-       
-       return ERROR_OK;
+       retval = fileio_open_local(fileio);
+
+       return retval;
 }
 
 int fileio_close_local(fileio_t *fileio)
 {
        int retval;
-       fileio_local_t *fileio_local = fileio->location_private;
-       
-       if (fileio->location_private == NULL)
-       {
-               snprintf(fileio->error_str, FILEIO_MAX_ERROR_STRING, "couldn't close %s: ", fileio->url);
-               return ERROR_FILEIO_OPERATION_FAILED;
-       }
-       
-       if ((retval = fclose(fileio_local->file)) != 0)
+       if ((retval = fclose(fileio->file)) != 0)
        {
                if (retval == EBADF)
                {
-                       snprintf(fileio->error_str, FILEIO_MAX_ERROR_STRING, "BUG: fileio_local->file not a valid file descriptor");
+                       ERROR("BUG: fileio_local->file not a valid file descriptor");
                }
                else
                {
-                       snprintf(fileio->error_str, FILEIO_MAX_ERROR_STRING, "couldn't close %s: %s", fileio->url, strerror(errno));
+                       ERROR("couldn't close %s: %s", fileio->url, strerror(errno));
                }
 
                return ERROR_FILEIO_OPERATION_FAILED;
        }
        
-       free(fileio->location_private);
-       fileio->location_private = NULL;
-       
        return ERROR_OK;
 }
 
@@ -185,73 +144,36 @@ int fileio_close(fileio_t *fileio)
 {
        int retval;
        
-       switch (fileio->location)
-       {
-               case FILEIO_LOCAL:
-                       retval = fileio_close_local(fileio);
-                       break;
-               default:
-                       ERROR("BUG: should never get here");
-                       retval = ERROR_FILEIO_OPERATION_FAILED;
-       }
-       
-       if (retval != ERROR_OK)
-               return retval;
+       retval = fileio_close_local(fileio);
        
        free(fileio->url);
        fileio->url = NULL;
        
-       return ERROR_OK;
+       return retval;
 }
 
-int fileio_seek_local(fileio_t *fileio, u32 position)
+int fileio_seek(fileio_t *fileio, u32 position)
 {
        int retval;
-       fileio_local_t *fileio_local = fileio->location_private;
-       
-       if ((retval = fseek(fileio_local->file, position, SEEK_SET)) != 0)
+       if ((retval = fseek(fileio->file, position, SEEK_SET)) != 0)
        {
-               snprintf(fileio->error_str, FILEIO_MAX_ERROR_STRING, "couldn't seek file %s: %s", fileio->url, strerror(errno));
+               ERROR("couldn't seek file %s: %s", fileio->url, strerror(errno));
                return ERROR_FILEIO_OPERATION_FAILED;
        }
        
        return ERROR_OK;
 }
 
-int fileio_seek(fileio_t *fileio, u32 position)
-{
-       switch (fileio->location)
-       {
-               case FILEIO_LOCAL:
-                       return fileio_seek_local(fileio, position);
-                       break;
-               default:
-                       ERROR("BUG: should never get here");
-       }
-       
-       return ERROR_OK;
-}
-
 int fileio_local_read(fileio_t *fileio, u32 size, u8 *buffer, u32 *size_read)
 {
-       fileio_local_t *fileio_local = fileio->location_private;
-       
-       *size_read = fread(buffer, 1, size, fileio_local->file);
+       *size_read = fread(buffer, 1, size, fileio->file);
        
        return ERROR_OK;
 }
 
 int fileio_read(fileio_t *fileio, u32 size, u8 *buffer, u32 *size_read)
 {
-       switch (fileio->location)
-       {
-               case FILEIO_LOCAL:
-                       return fileio_local_read(fileio, size, buffer, size_read);
-                       break;
-               default:
-                       ERROR("BUG: should never get here");
-                       exit(-1);
-       }
+       return fileio_local_read(fileio, size, buffer, size_read);
 }
 
 int fileio_read_u32(fileio_t *fileio, u32 *data)
@@ -260,26 +182,16 @@ int fileio_read_u32(fileio_t *fileio, u32 *data)
        u32 size_read;
        int retval;
        
-       switch (fileio->location)
-       {
-               case FILEIO_LOCAL:
-                       if ((retval = fileio_local_read(fileio, 4, buf, &size_read)) != ERROR_OK)
-                               return retval;
-                       *data = be_to_h_u32(buf);
-                       break;
-               default:
-                       ERROR("BUG: should never get here");
-                       exit(-1);
-       }
+       if ((retval = fileio_local_read(fileio, 4, buf, &size_read)) != ERROR_OK)
+               return retval;
+       *data = be_to_h_u32(buf);
        
        return ERROR_OK;
 }
 
 int fileio_local_fgets(fileio_t *fileio, u32 size, u8 *buffer)
 {
-       fileio_local_t *fileio_local = fileio->location_private;
-       
-       if( fgets(buffer, size, fileio_local->file) == NULL)
+       if( fgets(buffer, size, fileio->file) == NULL)
                return ERROR_FILEIO_OPERATION_FAILED;
        
        return ERROR_OK;
@@ -287,22 +199,12 @@ int fileio_local_fgets(fileio_t *fileio, u32 size, u8 *buffer)
 
 int fileio_fgets(fileio_t *fileio, u32 size, u8 *buffer)
 {
-       switch (fileio->location)
-       {
-               case FILEIO_LOCAL:
-                       return fileio_local_fgets(fileio, size, buffer);
-                       break;
-               default:
-                       ERROR("BUG: should never get here");
-                       exit(-1);
-       }
+       return fileio_local_fgets(fileio, size, buffer);
 }
 
 int fileio_local_write(fileio_t *fileio, u32 size, u8 *buffer, u32 *size_written)
 {
-       fileio_local_t *fileio_local = fileio->location_private;
-       
-       *size_written = fwrite(buffer, 1, size, fileio_local->file);
+       *size_written = fwrite(buffer, 1, size, fileio->file);
        
        return ERROR_OK;
 }
@@ -311,15 +213,7 @@ int fileio_write(fileio_t *fileio, u32 size, u8 *buffer, u32 *size_written)
 {
        int retval;
        
-       switch (fileio->location)
-       {
-               case FILEIO_LOCAL:
-                       retval = fileio_local_write(fileio, size, buffer, size_written);
-                       break;
-               default:
-                       ERROR("BUG: should never get here");
-                       exit(-1);
-       }
+       retval = fileio_local_write(fileio, size, buffer, size_written);
        
        if (retval == ERROR_OK)
                fileio->size += *size_written;
@@ -335,15 +229,8 @@ int fileio_write_u32(fileio_t *fileio, u32 data)
        
        h_u32_to_be(buf, data);
        
-       switch (fileio->location)
-       {
-               case FILEIO_LOCAL:
-                       if ((retval = fileio_local_write(fileio, 4, buf, &size_written)) != ERROR_OK)
-                               return retval;
-                       break;
-               default:
-                       ERROR("BUG: should never get here");
-       }
+       if ((retval = fileio_local_write(fileio, 4, buf, &size_written)) != ERROR_OK)
+               return retval;
        
        return ERROR_OK;
 }
index c67be2c785b3a69a6cccd88f994824a5241dc16b..5f6241d0edb23b09bc10839680348ab7a72b28de 100644 (file)
@@ -38,18 +38,6 @@ enum fileio_type
        FILEIO_BINARY,
 };
 
-enum fileio_location
-{
-       FILEIO_LOCAL,
-/*
- * Possible future enhancements:
- * FILEIO_NFS,
- * FILEIO_BOOTP,
- * FILEIO_[XYZ]MODEM,
- * FILEIO_HTTP,
- * FILEIO_FTP,
- */
-};
 
 enum fileio_access
 {
@@ -63,18 +51,11 @@ enum fileio_access
 typedef struct fileio_s
 {
        char *url;
-       char error_str[FILEIO_MAX_ERROR_STRING];
        long long size;
        enum fileio_type type;
-       enum fileio_location location;
        enum fileio_access access;
-       void *location_private;
-} fileio_t;
-
-typedef struct fileio_local_s
-{
        FILE *file;
-} fileio_local_t;
+} fileio_t;
 
 extern int fileio_write(fileio_t *fileio, u32 size, u8 *buffer, u32 *size_written);
 extern int fileio_read(fileio_t *fileio, u32 size, u8 *buffer, u32 *size_read);
index 51f4c682b6237343d51a789d9c15ce046a78f261..dd713b9b9f4b0aaa012f2c294b1f9077e967344a 100644 (file)
@@ -764,7 +764,6 @@ int arm7_9_assert_reset(target_t *target)
                {
                        if (retval == ERROR_JTAG_RESET_WOULD_ASSERT_TRST)
                        {
-                               WARNING("srst resets test logic, too");
                                retval = jtag_add_reset(1, 1);
                        }
                }
@@ -775,7 +774,6 @@ int arm7_9_assert_reset(target_t *target)
                {
                        if (retval == ERROR_JTAG_RESET_WOULD_ASSERT_TRST)
                        {
-                               WARNING("srst resets test logic, too");
                                retval = jtag_add_reset(1, 1);
                        }
                        
index 8475a99fe9ca66a4c652118a3beef989a2253002..fc49c1d716507a5e9194dddeb297a3e105a01fc8 100644 (file)
@@ -1387,6 +1387,9 @@ int handle_etm_info_command(struct command_context_s *cmd_ctx, char *cmd, char *
                case 2:
                        max_port_size = 16;
                        break;
+               default:
+                       ERROR("Illegal max_port_size");
+                       exit(-1);
        }
        command_print(cmd_ctx, "max. port size: %i", max_port_size);
        
@@ -1505,7 +1508,6 @@ int handle_etm_image_command(struct command_context_s *cmd_ctx, char *cmd, char
                
        if (image_open(etm_ctx->image, args[0], (argc >= 3) ? args[2] : NULL) != ERROR_OK)
        {
-               command_print(cmd_ctx, "image opening error: %s", etm_ctx->image->error_str);
                free(etm_ctx->image);
                etm_ctx->image = NULL;
                return ERROR_OK;
@@ -1562,7 +1564,6 @@ int handle_etm_dump_command(struct command_context_s *cmd_ctx, char *cmd, char *
        
        if (fileio_open(&file, args[0], FILEIO_WRITE, FILEIO_BINARY) != ERROR_OK)
        {
-               command_print(cmd_ctx, "file open error: %s", file.error_str);
                return ERROR_OK;
        }
        
@@ -1620,7 +1621,6 @@ int handle_etm_load_command(struct command_context_s *cmd_ctx, char *cmd, char *
        
        if (fileio_open(&file, args[0], FILEIO_READ, FILEIO_BINARY) != ERROR_OK)
        {
-               command_print(cmd_ctx, "file open error: %s", file.error_str);
                return ERROR_OK;
        }
        
index a457b567b450bcc5521b427c87202a901908c37c..3fac057182f266fd803df2974d88fa62e2d12828 100644 (file)
 #include "target.h"
 
 /* convert ELF header field to host endianness */
-#define field16(elf, field)\
-       ((elf->endianness == ELFDATA2LSB)? \
-               le_to_h_u16((u8*)&field) : be_to_h_u16((u8*)&field))
+#define field16(elf,field)\
+       ((elf->endianness==ELFDATA2LSB)? \
+               le_to_h_u16((u8*)&field):be_to_h_u16((u8*)&field)) 
 
-#define field32(elf, field)\
-       ((elf->endianness == ELFDATA2LSB)? \
-               le_to_h_u32((u8*)&field) : be_to_h_u32((u8*)&field))
+#define field32(elf,field)\
+       ((elf->endianness==ELFDATA2LSB)? \
+               le_to_h_u32((u8*)&field):be_to_h_u32((u8*)&field)) 
 
 static int autodetect_image_type(image_t *image, char *url)
 {
@@ -51,24 +51,18 @@ static int autodetect_image_type(image_t *image, char *url)
        fileio_t fileio;
        u32 read_bytes;
        u8 buffer[9];
-
+       
        /* read the first 4 bytes of image */
        if ((retval = fileio_open(&fileio, url, FILEIO_READ, FILEIO_BINARY)) != ERROR_OK)
        {
-               snprintf(image->error_str, IMAGE_MAX_ERROR_STRING, "cannot open image: %s", fileio.error_str);
-               ERROR(image->error_str);
                return retval;
        }
        if ((retval = fileio_read(&fileio, 9, buffer, &read_bytes)) != ERROR_OK)
        {
-               snprintf(image->error_str, IMAGE_MAX_ERROR_STRING, "cannot read image header: %s", fileio.error_str);
-               ERROR(image->error_str);
                return ERROR_FILEIO_OPERATION_FAILED;
        }
        if (read_bytes != 9)
        {
-               snprintf(image->error_str, IMAGE_MAX_ERROR_STRING, "cannot read image, only partially read");
-               ERROR(image->error_str);
                return ERROR_FILEIO_OPERATION_FAILED;
        }
        fileio_close(&fileio);
@@ -79,15 +73,15 @@ static int autodetect_image_type(image_t *image, char *url)
                DEBUG("ELF image detected.");
                image->type = IMAGE_ELF;
        }
-       else if ((buffer[0] == ':') /* record start byte */
+       else if  ((buffer[0]==':') /* record start byte */
                &&(isxdigit(buffer[1]))
                &&(isxdigit(buffer[2]))
                &&(isxdigit(buffer[3]))
                &&(isxdigit(buffer[4]))
                &&(isxdigit(buffer[5]))
                &&(isxdigit(buffer[6]))
-               &&(buffer[7] == '0') /* record type : 00 -> 05 */
-               &&(buffer[8] >= '0') && (buffer[8] < '6'))
+               &&(buffer[7]=='0') /* record type : 00 -> 05 */
+               &&(buffer[8]>='0')&&(buffer[8]<'6'))
        {
                DEBUG("IHEX image detected.");
                image->type = IMAGE_IHEX;
@@ -146,7 +140,7 @@ int identify_image_type(image_t *image, char *type_string, char *url)
        {
                return autodetect_image_type(image, url);
        }
-
+       
        return ERROR_OK;
 }
 
@@ -158,7 +152,7 @@ int image_ihex_buffer_complete(image_t *image)
        u32 cooked_bytes;
        int i;
        char lpszLine[1023];
-
+       
        /* 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 */
        image_section_t section[IMAGE_MAX_SECTIONS];
@@ -170,7 +164,7 @@ int image_ihex_buffer_complete(image_t *image)
        section[image->num_sections].base_address = 0x0;
        section[image->num_sections].size = 0x0;
        section[image->num_sections].flags = 0;
-
+       
        while (fileio_fgets(fileio, 1023, lpszLine) == ERROR_OK)
        {
                u32 count;
@@ -179,18 +173,18 @@ int image_ihex_buffer_complete(image_t *image)
                u32 checksum;
                u8 cal_checksum = 0;
                u32 bytes_read = 0;
-
+               
                if (sscanf(&lpszLine[bytes_read], ":%2x%4x%2x", &count, &address, &record_type) != 3)
                {
                        return ERROR_IMAGE_FORMAT_ERROR;
                }
                bytes_read += 9;
-
+               
                cal_checksum += (u8)count;
                cal_checksum += (u8)(address >> 8);
                cal_checksum += (u8)address;
                cal_checksum += (u8)record_type;
-
+               
                if (record_type == 0) /* Data Record */
                {
                        if ((full_address & 0xffff) != address)
@@ -210,7 +204,7 @@ int image_ihex_buffer_complete(image_t *image)
                                        (full_address & 0xffff0000) | address;
                                full_address = (full_address & 0xffff0000) | address;
                        }
-
+                       
                        while (count-- > 0)
                        {
                                sscanf(&lpszLine[bytes_read], "%2x", (u32*)&ihex->buffer[cooked_bytes]);
@@ -225,7 +219,7 @@ int image_ihex_buffer_complete(image_t *image)
                {
                        /* finish the current section */
                        image->num_sections++;
-
+                       
                        /* copy section information */
                        image->sections = malloc(sizeof(image_section_t) * image->num_sections);
                        for (i = 0; i < image->num_sections; i++)
@@ -235,18 +229,18 @@ int image_ihex_buffer_complete(image_t *image)
                                image->sections[i].size = section[i].size;
                                image->sections[i].flags = section[i].flags;
                        }
-
+                       
                        return ERROR_OK;
                }
                else if (record_type == 2) /* Linear Address Record */
                {
                        u16 upper_address;
-
+                       
                        sscanf(&lpszLine[bytes_read], "%4hx", &upper_address);
                        cal_checksum += (u8)(upper_address >> 8);
                        cal_checksum += (u8)upper_address;
                        bytes_read += 4;
-
+                       
                        if ((full_address >> 4) != upper_address)
                        {
                                /* we encountered a nonconsecutive location, create a new section,
@@ -260,7 +254,7 @@ int image_ihex_buffer_complete(image_t *image)
                                        section[image->num_sections].flags = 0;
                                        section[image->num_sections].private = &ihex->buffer[cooked_bytes];
                                }
-                               section[image->num_sections].base_address =
+                               section[image->num_sections].base_address = 
                                        (full_address & 0xffff) | (upper_address << 4);
                                full_address = (full_address & 0xffff) | (upper_address << 4);
                        }
@@ -268,7 +262,7 @@ int image_ihex_buffer_complete(image_t *image)
                else if (record_type == 3) /* Start Segment Address Record */
                {
                        u32 dummy;
-
+                       
                        /* "Start Segment Address Record" will not be supported */
                        /* but we must consume it, and do not create an error.  */
                        while (count-- > 0)
@@ -281,12 +275,12 @@ int image_ihex_buffer_complete(image_t *image)
                else if (record_type == 4) /* Extended Linear Address Record */
                {
                        u16 upper_address;
-
+                       
                        sscanf(&lpszLine[bytes_read], "%4hx", &upper_address);
                        cal_checksum += (u8)(upper_address >> 8);
                        cal_checksum += (u8)upper_address;
                        bytes_read += 4;
-
+                       
                        if ((full_address >> 16) != upper_address)
                        {
                                /* we encountered a nonconsecutive location, create a new section,
@@ -300,7 +294,7 @@ int image_ihex_buffer_complete(image_t *image)
                                        section[image->num_sections].flags = 0;
                                        section[image->num_sections].private = &ihex->buffer[cooked_bytes];
                                }
-                               section[image->num_sections].base_address =
+                               section[image->num_sections].base_address = 
                                        (full_address & 0xffff) | (upper_address << 16);
                                full_address = (full_address & 0xffff) | (upper_address << 16);
                        }
@@ -308,14 +302,14 @@ int image_ihex_buffer_complete(image_t *image)
                else if (record_type == 5) /* Start Linear Address Record */
                {
                        u32 start_address;
-
+                       
                        sscanf(&lpszLine[bytes_read], "%8x", &start_address);
                        cal_checksum += (u8)(start_address >> 24);
                        cal_checksum += (u8)(start_address >> 16);
                        cal_checksum += (u8)(start_address >> 8);
                        cal_checksum += (u8)start_address;
                        bytes_read += 8;
-
+                       
                        image->start_address_set = 1;
                        image->start_address = be_to_h_u32((u8*)&start_address);
                }
@@ -324,10 +318,10 @@ int image_ihex_buffer_complete(image_t *image)
                        ERROR("unhandled IHEX record type: %i", record_type);
                        return ERROR_IMAGE_FORMAT_ERROR;
                }
-
+               
                sscanf(&lpszLine[bytes_read], "%2x", &checksum);
                bytes_read += 2;
-
+               
                if ((u8)checksum != (u8)(~cal_checksum + 1))
                {
                        /* checksum failed */
@@ -335,7 +329,7 @@ int image_ihex_buffer_complete(image_t *image)
                        return ERROR_IMAGE_CHECKSUM;
                }
        }
-
+       
        ERROR("premature end of IHEX file, no end-of-file record found");
        return ERROR_IMAGE_FORMAT_ERROR;
 }
@@ -360,12 +354,12 @@ int image_elf_read_headers(image_t *image)
                return ERROR_FILEIO_OPERATION_FAILED;
        }
 
-       if (strncmp((char*)elf->header->e_ident,ELFMAG,SELFMAG) != 0)
+       if (strncmp((char*)elf->header->e_ident,ELFMAG,SELFMAG)!=0)
        {
                ERROR("invalid ELF file, bad magic number");
                return ERROR_IMAGE_FORMAT_ERROR;
        }
-       if (elf->header->e_ident[EI_CLASS] != ELFCLASS32)
+       if (elf->header->e_ident[EI_CLASS]!=ELFCLASS32)
        {
                ERROR("invalid ELF file, only 32bits files are supported");
                return ERROR_IMAGE_FORMAT_ERROR;
@@ -373,28 +367,28 @@ int image_elf_read_headers(image_t *image)
 
 
        elf->endianness = elf->header->e_ident[EI_DATA];
-       if ((elf->endianness != ELFDATA2LSB)
-                &&(elf->endianness != ELFDATA2MSB))
+       if ((elf->endianness!=ELFDATA2LSB)
+                &&(elf->endianness!=ELFDATA2MSB))
        {
                ERROR("invalid ELF file, unknown endianess setting");
                return ERROR_IMAGE_FORMAT_ERROR;
        }
 
-       elf->segment_count = field16(elf, elf->header->e_phnum);
-       if (elf->segment_count == 0)
+       elf->segment_count = field16(elf,elf->header->e_phnum);
+       if (elf->segment_count==0)
        {
                ERROR("invalid ELF file, no program headers");
                return ERROR_IMAGE_FORMAT_ERROR;
        }
 
-       elf->segments = malloc(elf->segment_count * sizeof(Elf32_Phdr));
+       elf->segments = malloc(elf->segment_count*sizeof(Elf32_Phdr));
 
-       if ((retval = fileio_read(&elf->fileio, elf->segment_count * sizeof(Elf32_Phdr), (u8*)elf->segments, &read_bytes)) != ERROR_OK)
+       if ((retval = fileio_read(&elf->fileio, elf->segment_count*sizeof(Elf32_Phdr), (u8*)elf->segments, &read_bytes)) != ERROR_OK)
        {
                ERROR("cannot read ELF segment headers, read failed");
                return retval;
        }
-       if (read_bytes != elf->segment_count * sizeof(Elf32_Phdr))
+       if (read_bytes != elf->segment_count*sizeof(Elf32_Phdr))
        {
                ERROR("cannot read ELF segment headers, only partially read");
                return ERROR_FILEIO_OPERATION_FAILED;
@@ -402,25 +396,25 @@ int image_elf_read_headers(image_t *image)
 
        /* count useful segments (loadable), ignore BSS section */
        image->num_sections = 0;
-       for (i = 0; i < elf->segment_count; i++)
+       for (i=0;i<elf->segment_count;i++)
                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(image_section_t));
-       for (i = 0, j = 0; i < elf->segment_count; i++)
+       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))
                {
-                       image->sections[j].size = field32(elf, elf->segments[i].p_filesz);
-                       image->sections[j].base_address = field32(elf, elf->segments[i].p_paddr);
+                       image->sections[j].size = field32(elf,elf->segments[i].p_filesz);
+                       image->sections[j].base_address = field32(elf,elf->segments[i].p_paddr);
                        image->sections[j].private = &elf->segments[i];
-                       image->sections[j].flags = field32(elf, elf->segments[i].p_flags);
+                       image->sections[j].flags = field32(elf,elf->segments[i].p_flags);
                        j++;
                }
        }
-
+               
        image->start_address_set = 1;
-       image->start_address = field32(elf, elf->header->e_entry);
+       image->start_address = field32(elf,elf->header->e_entry);
 
        return ERROR_OK;
 }
@@ -429,22 +423,22 @@ int image_elf_read_section(image_t *image, int section, u32 offset, u32 size, u8
 {
        image_elf_t *elf = image->type_private;
        Elf32_Phdr *segment = (Elf32_Phdr *)image->sections[section].private;
-       u32 read_size, really_read;
+       u32 read_size,really_read;
        int retval;
 
        *size_read = 0;
-
-       DEBUG("load segment %d at 0x%x (sz = 0x%x)", section, offset, size);
+       
+       DEBUG("load segment %d at 0x%x (sz=0x%x)",section,offset,size);
 
        /* read initialized data in current segment if any */
-       if (offset < field32(elf, segment->p_filesz))
+       if (offset<field32(elf,segment->p_filesz))
        {
                /* maximal size present in file for the current segment */
-               read_size = MIN(size, field32(elf, segment->p_filesz) - offset);
-               DEBUG("read elf: size = 0x%x at 0x%x", read_size,
-                       field32(elf, segment->p_offset) + offset);
+               read_size = MIN(size, field32(elf,segment->p_filesz)-offset);
+               DEBUG("read elf: size = 0x%x at 0x%x",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)
+               if ((retval = fileio_seek(&elf->fileio, field32(elf,segment->p_offset)+offset)) != ERROR_OK)
                {
                        ERROR("cannot find ELF segment content, seek failed");
                        return retval;
@@ -462,7 +456,7 @@ int image_elf_read_section(image_t *image, int section, u32 offset, u32 size, u8
                if (!size)
                        return ERROR_OK;
        }
-
+       
        return ERROR_OK;
 }
 
@@ -474,11 +468,11 @@ int image_mot_buffer_complete(image_t *image)
        u32 cooked_bytes;
        int i;
        char lpszLine[1023];
-
+       
        /* 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 */
        image_section_t section[IMAGE_MAX_SECTIONS];
-
+       
        mot->buffer = malloc(fileio->size >> 1);
        cooked_bytes = 0x0;
        image->num_sections = 0;
@@ -486,7 +480,7 @@ int image_mot_buffer_complete(image_t *image)
        section[image->num_sections].base_address = 0x0;
        section[image->num_sections].size = 0x0;
        section[image->num_sections].flags = 0;
-
+       
        while (fileio_fgets(fileio, 1023, lpszLine) == ERROR_OK)
        {
                u32 count;
@@ -495,24 +489,24 @@ int image_mot_buffer_complete(image_t *image)
                u32 checksum;
                u8 cal_checksum = 0;
                u32 bytes_read = 0;
-
+                       
                /* get record type and record length */
                if (sscanf(&lpszLine[bytes_read], "S%1x%2x", &record_type, &count) != 2)
                {
                        return ERROR_IMAGE_FORMAT_ERROR;
                }
-
+               
                bytes_read += 4;
                cal_checksum += (u8)count;
-
+               
                /* skip checksum byte */
                count -=1;
-
+               
                if (record_type == 0)
                {
                        /* S0 - starting record (optional) */
                        int iValue;
-
+                       
                        while (count-- > 0) {
                                sscanf(&lpszLine[bytes_read], "%2x", &iValue);
                                cal_checksum += (u8)iValue;
@@ -531,7 +525,7 @@ int image_mot_buffer_complete(image_t *image)
                                        bytes_read += 4;
                                        count -=2;
                                        break;
-
+                       
                                case 2:
                                        /* S2 - 24 bit address data record */
                                        sscanf(&lpszLine[bytes_read], "%6x", &address);
@@ -541,7 +535,7 @@ int image_mot_buffer_complete(image_t *image)
                                        bytes_read += 6;
                                        count -=3;
                                        break;
-
+                                       
                                case 3:
                                        /* S3 - 32 bit address data record */
                                        sscanf(&lpszLine[bytes_read], "%8x", &address);
@@ -552,8 +546,9 @@ int image_mot_buffer_complete(image_t *image)
                                        bytes_read += 8;
                                        count -=4;
                                        break;
+                       
                        }
-
+                       
                        if (full_address != address)
                        {
                                /* we encountered a nonconsecutive location, create a new section,
@@ -570,7 +565,7 @@ int image_mot_buffer_complete(image_t *image)
                                section[image->num_sections].base_address = address;
                                full_address = address;
                        }
-
+                       
                        while (count-- > 0)
                        {
                                sscanf(&lpszLine[bytes_read], "%2x", (u32*)&mot->buffer[cooked_bytes]);
@@ -585,7 +580,7 @@ int image_mot_buffer_complete(image_t *image)
                {
                        /* S5 is the data count record, we ignore it */
                        u32 dummy;
-
+                       
                        while (count-- > 0)
                        {
                                sscanf(&lpszLine[bytes_read], "%2x", &dummy);
@@ -597,7 +592,7 @@ int image_mot_buffer_complete(image_t *image)
                {
                        /* S7, S8, S9 - ending records for 32, 24 and 16bit */
                        image->num_sections++;
-
+                       
                        /* copy section information */
                        image->sections = malloc(sizeof(image_section_t) * image->num_sections);
                        for (i = 0; i < image->num_sections; i++)
@@ -607,7 +602,7 @@ int image_mot_buffer_complete(image_t *image)
                                image->sections[i].size = section[i].size;
                                image->sections[i].flags = section[i].flags;
                        }
-
+                       
                        return ERROR_OK;
                }
                else
@@ -615,12 +610,12 @@ int image_mot_buffer_complete(image_t *image)
                        ERROR("unhandled S19 record type: %i", record_type);
                        return ERROR_IMAGE_FORMAT_ERROR;
                }
-
+               
                /* account for checksum, will always be 0xFF */
                sscanf(&lpszLine[bytes_read], "%2x", &checksum);
                cal_checksum += (u8)checksum;
                bytes_read += 2;
-
+               
                if( cal_checksum != 0xFF )
                {
                        /* checksum failed */
@@ -628,7 +623,7 @@ int image_mot_buffer_complete(image_t *image)
                        return ERROR_IMAGE_CHECKSUM;
                }
        }
-
+       
        ERROR("premature end of S19 file, no end-of-file record found");
        return ERROR_IMAGE_FORMAT_ERROR;
 }
@@ -636,25 +631,23 @@ int image_mot_buffer_complete(image_t *image)
 int image_open(image_t *image, char *url, char *type_string)
 {
        int retval = ERROR_OK;
-
+       
        if ((retval = identify_image_type(image, type_string, url)) != ERROR_OK)
        {
                return retval;
        }
-
+       
        if (image->type == IMAGE_BINARY)
        {
                image_binary_t *image_binary;
-
+               
                image_binary = image->type_private = malloc(sizeof(image_binary_t));
-
+               
                if ((retval = fileio_open(&image_binary->fileio, url, FILEIO_READ, FILEIO_BINARY)) != ERROR_OK)
                {
-                       strncpy(image->error_str, image_binary->fileio.error_str, IMAGE_MAX_ERROR_STRING);
-                       ERROR(image->error_str);
                        return retval;
                }
-
+               
                image->num_sections = 1;
                image->sections = malloc(sizeof(image_section_t));
                image->sections[0].base_address = 0x0;
@@ -664,21 +657,17 @@ int image_open(image_t *image, char *url, char *type_string)
        else if (image->type == IMAGE_IHEX)
        {
                image_ihex_t *image_ihex;
-
+               
                image_ihex = image->type_private = malloc(sizeof(image_ihex_t));
-
+               
                if ((retval = fileio_open(&image_ihex->fileio, url, FILEIO_READ, FILEIO_TEXT)) != ERROR_OK)
                {
-                       strncpy(image->error_str, image_ihex->fileio.error_str, IMAGE_MAX_ERROR_STRING);
-                       ERROR(image->error_str);
                        return retval;
                }
-
+               
                if ((retval = image_ihex_buffer_complete(image)) != ERROR_OK)
                {
-                       snprintf(image->error_str, IMAGE_MAX_ERROR_STRING,
-                               "failed buffering IHEX image, check daemon output for additional information");
-                       ERROR(image->error_str);
+                       ERROR("failed buffering IHEX image, check daemon output for additional information");
                        fileio_close(&image_ihex->fileio);
                        return retval;
                }
@@ -686,21 +675,16 @@ int image_open(image_t *image, char *url, char *type_string)
        else if (image->type == IMAGE_ELF)
        {
                image_elf_t *image_elf;
-
+               
                image_elf = image->type_private = malloc(sizeof(image_elf_t));
-
+               
                if ((retval = fileio_open(&image_elf->fileio, url, FILEIO_READ, FILEIO_BINARY)) != ERROR_OK)
                {
-                       strncpy(image->error_str, image_elf->fileio.error_str, IMAGE_MAX_ERROR_STRING);
-                       ERROR(image->error_str);
                        return retval;
                }
-
+               
                if ((retval = image_elf_read_headers(image)) != ERROR_OK)
                {
-                       snprintf(image->error_str, IMAGE_MAX_ERROR_STRING,
-                               "failed to read ELF headers, check daemon output for additional information");
-                       ERROR(image->error_str);
                        fileio_close(&image_elf->fileio);
                        return retval;
                }
@@ -708,15 +692,15 @@ int image_open(image_t *image, char *url, char *type_string)
        else if (image->type == IMAGE_MEMORY)
        {
                image_memory_t *image_memory;
-
+               
                image->num_sections = 1;
                image->sections = malloc(sizeof(image_section_t));
                image->sections[0].base_address = 0x0;
                image->sections[0].size = 0xffffffff;
                image->sections[0].flags = 0;
-
+               
                image_memory = image->type_private = malloc(sizeof(image_memory_t));
-
+               
                image_memory->target = get_target_by_num(strtoul(url, NULL, 0));;
                image_memory->cache = NULL;
                image_memory->cache_address = 0x0;
@@ -724,21 +708,17 @@ int image_open(image_t *image, char *url, char *type_string)
        else if (image->type == IMAGE_SRECORD)
        {
                image_mot_t *image_mot;
-
+               
                image_mot = image->type_private = malloc(sizeof(image_mot_t));
-
+               
                if ((retval = fileio_open(&image_mot->fileio, url, FILEIO_READ, FILEIO_TEXT)) != ERROR_OK)
                {
-                       strncpy(image->error_str, image_mot->fileio.error_str, IMAGE_MAX_ERROR_STRING);
-                       ERROR(image->error_str);
                        return retval;
                }
-
+               
                if ((retval = image_mot_buffer_complete(image)) != ERROR_OK)
                {
-                       snprintf(image->error_str, IMAGE_MAX_ERROR_STRING,
-                               "failed buffering S19 image, check daemon output for additional information");
-                       ERROR(image->error_str);
+                       ERROR("failed buffering S19 image, check daemon output for additional information");
                        fileio_close(&image_mot->fileio);
                        return retval;
                }
@@ -754,17 +734,17 @@ int image_open(image_t *image, char *url, char *type_string)
        {
                /* relocate */
                int section;
-               for (section = 0; section < image->num_sections; section++)
+               for (section=0; section < image->num_sections; section++)
                {
-                       image->sections[section].base_address += image->base_address;
+                       image->sections[section].base_address+=image->base_address;
                }
                /* we're done relocating. The two statements below are mainly
                 * for documenation purposes: stop anyone from empirically
                 * thinking they should use these values henceforth. */
-               image->base_address = 0;
-               image->base_address_set = 0;
+               image->base_address=0;
+               image->base_address_set=0;
        }
-
+       
        return retval;
 };
 
@@ -783,22 +763,20 @@ int image_read_section(image_t *image, int section, u32 offset, u32 size, u8 *bu
        if (image->type == IMAGE_BINARY)
        {
                image_binary_t *image_binary = image->type_private;
-
+               
                /* only one section in a plain binary */
                if (section != 0)
                        return ERROR_INVALID_ARGUMENTS;
-
+                       
                /* seek to offset */
                if ((retval = fileio_seek(&image_binary->fileio, offset)) != ERROR_OK)
                {
-                       strncpy(image->error_str, image_binary->fileio.error_str, IMAGE_MAX_ERROR_STRING);
                        return retval;
                }
-
+               
                /* return requested bytes */
                if ((retval = fileio_read(&image_binary->fileio, size, buffer, size_read)) != ERROR_OK)
                {
-                       strncpy(image->error_str, image_binary->fileio.error_str, IMAGE_MAX_ERROR_STRING);
                        return retval;
                }
        }
@@ -806,8 +784,7 @@ int image_read_section(image_t *image, int section, u32 offset, u32 size, u8 *bu
        {
                memcpy(buffer, (u8*)image->sections[section].private + offset, size);
                *size_read = size;
-               image->error_str[0] = '\0';
-
+               
                return ERROR_OK;
        }
        else if (image->type == IMAGE_ELF)
@@ -818,20 +795,20 @@ int image_read_section(image_t *image, int section, u32 offset, u32 size, u8 *bu
        {
                image_memory_t *image_memory = image->type_private;
                u32 address = image->sections[section].base_address + offset;
-
+               
                *size_read = 0;
-
+               
                while ((size - *size_read) > 0)
                {
                        u32 size_in_cache;
-
+                       
                        if (!image_memory->cache
                                || (address < image_memory->cache_address)
                                || (address >= (image_memory->cache_address + IMAGE_MEMORY_CACHE_SIZE)))
                        {
                                if (!image_memory->cache)
                                        image_memory->cache = malloc(IMAGE_MEMORY_CACHE_SIZE);
-
+                               
                                if (target_read_buffer(image_memory->target, address & ~(IMAGE_MEMORY_CACHE_SIZE - 1),
                                        IMAGE_MEMORY_CACHE_SIZE, image_memory->cache) != ERROR_OK)
                                {
@@ -841,14 +818,14 @@ int image_read_section(image_t *image, int section, u32 offset, u32 size, u8 *bu
                                }
                                image_memory->cache_address = address & ~(IMAGE_MEMORY_CACHE_SIZE - 1);
                        }
-
+                       
                        size_in_cache = (image_memory->cache_address + IMAGE_MEMORY_CACHE_SIZE) - address;
-
+                       
                        memcpy(buffer + *size_read,
                                image_memory->cache + (address - image_memory->cache_address),
                                (size_in_cache > size) ? size : size_in_cache
                                );
-
+                               
                        *size_read += (size_in_cache > size) ? size : size_in_cache;
                        address += (size_in_cache > size) ? size : size_in_cache;
                }
@@ -857,35 +834,33 @@ int image_read_section(image_t *image, int section, u32 offset, u32 size, u8 *bu
        {
                memcpy(buffer, (u8*)image->sections[section].private + offset, size);
                *size_read = size;
-               image->error_str[0] = '\0';
-
+               
                return ERROR_OK;
        }
        else if (image->type == IMAGE_BUILDER)
        {
                memcpy(buffer, (u8*)image->sections[section].private + offset, size);
                *size_read = size;
-               image->error_str[0] = '\0';
-
+               
                return ERROR_OK;
        }
-
+       
        return ERROR_OK;
 }
 
 int image_add_section(image_t *image, u32 base, u32 size, int flags, u8 *data)
 {
        image_section_t *section;
-
+       
        /* only image builder supports adding sections */
        if (image->type != IMAGE_BUILDER)
                return ERROR_INVALID_ARGUMENTS;
-
+       
        /* see if there's a previous section */
        if (image->num_sections)
        {
                section = &image->sections[image->num_sections - 1];
-
+               
                /* see if it's enough to extend the last section,
                 * adding data to previous sections or merging is not supported */
                if (((section->base_address + section->size) == base) && (section->flags == flags))
@@ -896,7 +871,7 @@ int image_add_section(image_t *image, u32 base, u32 size, int flags, u8 *data)
                        return ERROR_OK;
                }
        }
-
+               
        /* allocate new section */
        image->num_sections++;
        image->sections = realloc(image->sections, sizeof(image_section_t) * image->num_sections);
@@ -906,7 +881,7 @@ int image_add_section(image_t *image, u32 base, u32 size, int flags, u8 *data)
        section->flags = flags;
        section->private = malloc(sizeof(u8) * size);
        memcpy((u8*)section->private, data, size);
-
+       
        return ERROR_OK;
 }
 
@@ -915,15 +890,15 @@ int image_close(image_t *image)
        if (image->type == IMAGE_BINARY)
        {
                image_binary_t *image_binary = image->type_private;
-
+               
                fileio_close(&image_binary->fileio);
        }
        else if (image->type == IMAGE_IHEX)
        {
                image_ihex_t *image_ihex = image->type_private;
-
+               
                fileio_close(&image_ihex->fileio);
-
+               
                if (image_ihex->buffer)
                {
                        free(image_ihex->buffer);
@@ -933,7 +908,7 @@ int image_close(image_t *image)
        else if (image->type == IMAGE_ELF)
        {
                image_elf_t *image_elf = image->type_private;
-
+               
                fileio_close(&image_elf->fileio);
 
                if (image_elf->header)
@@ -951,7 +926,7 @@ int image_close(image_t *image)
        else if (image->type == IMAGE_MEMORY)
        {
                image_memory_t *image_memory = image->type_private;
-
+               
                if (image_memory->cache)
                {
                        free(image_memory->cache);
@@ -961,9 +936,9 @@ int image_close(image_t *image)
        else if (image->type == IMAGE_SRECORD)
        {
                image_mot_t *image_mot = image->type_private;
-
+               
                fileio_close(&image_mot->fileio);
-
+               
                if (image_mot->buffer)
                {
                        free(image_mot->buffer);
@@ -973,7 +948,7 @@ int image_close(image_t *image)
        else if (image->type == IMAGE_BUILDER)
        {
                int i;
-
+               
                for (i = 0; i < image->num_sections; i++)
                {
                        free(image->sections[i].private);
@@ -986,13 +961,13 @@ int image_close(image_t *image)
                free(image->type_private);
                image->type_private = NULL;
        }
-
+       
        if (image->sections)
        {
                free(image->sections);
                image->sections = NULL;
        }
-
+       
        return ERROR_OK;
 }
 
@@ -1001,7 +976,7 @@ static u32 crc32_table[256] = {0, 0};
 int image_calculate_checksum(u8* buffer, u32 nbytes, u32* checksum)
 {
        u32 crc = 0xffffffff;
-
+       
        if (!crc32_table[1])
        {
                /* Initialize the CRC table and the decoding table.  */
@@ -1015,16 +990,14 @@ int image_calculate_checksum(u8* buffer, u32 nbytes, u32* checksum)
                        crc32_table[i] = c;
                }
        }
-
+       
        while (nbytes--)
        {
                /* as per gdb */
                crc = (crc << 8) ^ crc32_table[((crc >> 24) ^ *buffer++) & 255];
        }
-
+       
        *checksum = crc;
        return ERROR_OK;
 }
 
-
-
index 47f0215f64e46bad4474b35da3932081c55326da..064654b35c691b33d74981a77ce160305d59e294 100644 (file)
@@ -64,7 +64,6 @@ typedef struct image_s
        int base_address;               /* base address, if one is set */
        int start_address_set;  /* whether the image has a start address (entry point) associated */
        u32 start_address;              /* start address, if one is set */
-       char error_str[IMAGE_MAX_ERROR_STRING];
 } image_t;
 
 typedef struct image_binary_s
index b156e227cd7e684835d9f8568addd60140625c03..fdb123041af491f28f2ccca71497a684f25e5e87 100644 (file)
@@ -327,7 +327,7 @@ int xscale_read_dcsr(target_t *target)
 
 int xscale_receive(target_t *target, u32 *buffer, int num_words)
 {
-       int retval = ERROR_OK;
+       int retval=ERROR_OK;
        armv4_5_common_t *armv4_5 = target->arch_info;
        xscale_common_t *xscale = armv4_5->arch_info;
 
@@ -380,7 +380,7 @@ int xscale_receive(target_t *target, u32 *buffer, int num_words)
        jtag_add_runtest(1, -1);
 
        /* repeat until all words have been collected */
-       int attempts = 0;
+       int attempts=0;
        while (words_done < num_words)
        {
                /* schedule reads */
@@ -417,12 +417,12 @@ int xscale_receive(target_t *target, u32 *buffer, int num_words)
                                words_scheduled--;
                        }
                }
-               if (words_scheduled == 0)
+               if (words_scheduled==0)
                {
-                       if (attempts++ == 1000)
+                       if (attempts++==1000)
                        {
                                ERROR("Failed to receiving data from debug handler after 1000 attempts");
-                               retval = ERROR_JTAG_QUEUE_FAILED;
+                               retval=ERROR_JTAG_QUEUE_FAILED;
                                break;
                        }
                }
@@ -472,7 +472,7 @@ int xscale_read_tx(target_t *target, int consume)
        noconsume_path[6] = TAP_SDS;
        noconsume_path[7] = TAP_CD;
        noconsume_path[8] = TAP_SD;
-
+       
        fields[0].device = xscale->jtag_info.chain_pos;
        fields[0].num_bits = 3;
        fields[0].out_value = NULL;
@@ -673,7 +673,7 @@ int xscale_send(target_t *target, u8 *buffer, int count, int size)
        {
                jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL);
        }
-
+       
        if (size==4)
        {
                int endianness = target->endianness;
@@ -700,26 +700,26 @@ int xscale_send(target_t *target, u8 *buffer, int count, int size)
        {
                while (done_count++ < count)
                {
-               /* extract sized element from target-endian buffer, and put it
-                * into little-endian output buffer
-                */
-               switch (size)
-               {
-                       case 2:
-                               buf_set_u32(output, 0, 32, target_buffer_get_u16(target, buffer));
-                               break;
-                       case 1:
-                               output[0] = *buffer;
-                               break;
-                       default:
-                               ERROR("BUG: size neither 4, 2 nor 1");
-                               exit(-1);
-               }
-
-               jtag_add_dr_scan(3, fields, TAP_RTI);
-               buffer += size;
-       }
+                       /* extract sized element from target-endian buffer, and put it
+                        * into little-endian output buffer
+                        */
+                       switch (size)
+                       {
+                               case 2:
+                                       buf_set_u32(output, 0, 32, target_buffer_get_u16(target, buffer));
+                                       break;
+                               case 1:
+                                       output[0] = *buffer;
+                                       break;
+                               default:
+                                       ERROR("BUG: size neither 4, 2 nor 1");
+                                       exit(-1);
+                       }
 
+                       jtag_add_dr_scan(3, fields, TAP_RTI);
+                       buffer += size;
+               }
+               
        }
 
        if ((retval = jtag_execute_queue()) != ERROR_OK)
@@ -1048,10 +1048,10 @@ int xscale_poll(target_t *target)
                        /* here we "lie" so GDB won't get stuck and a reset can be perfomed */
                        target->state = TARGET_HALTED;
                }
-
-                       /* debug_entry could have overwritten target state (i.e. immediate resume)
-                        * don't signal event handlers in that case
-                        */
+               
+               /* debug_entry could have overwritten target state (i.e. immediate resume)
+                * don't signal event handlers in that case
+                */
                if (target->state != TARGET_HALTED)
                        return ERROR_OK;
 
@@ -1062,6 +1062,7 @@ int xscale_poll(target_t *target)
                else
                        target_call_event_callbacks(target, TARGET_EVENT_DEBUG_HALTED);
        }
+
        return retval;
 }
 
@@ -1657,9 +1658,8 @@ int xscale_deassert_reset(target_t *target)
                xscale_write_dcsr(target, 1, 0);
 
                /* Load debug handler */
-               if (fileio_open(&debug_handler, PKGLIBDIR "/xscale/debug_handler.bin", FILEIO_READ, FILEIO_BINARY) != ERROR_OK)
+               if (fileio_open(&debug_handler, "xscale/debug_handler.bin", FILEIO_READ, FILEIO_BINARY) != ERROR_OK)
                {
-                       ERROR("file open error: %s", debug_handler.error_str);
                        return ERROR_OK;
                }
 
@@ -1685,7 +1685,7 @@ int xscale_deassert_reset(target_t *target)
 
                        if ((retval = fileio_read(&debug_handler, 32, buffer, &buf_cnt)) != ERROR_OK)
                        {
-                               ERROR("reading debug handler failed: %s", debug_handler.error_str);
+                               
                        }
 
                        for (i = 0; i < buf_cnt; i += 4)
@@ -2323,7 +2323,7 @@ int xscale_set_watchpoint(struct target_s *target, watchpoint_t *watchpoint)
 {
        armv4_5_common_t *armv4_5 = target->arch_info;
        xscale_common_t *xscale = armv4_5->arch_info;
-       u8 enable = 0;
+       u8 enable=0;
        reg_t *dbcon = &xscale->reg_cache->reg_list[XSCALE_DBCON];
        u32 dbcon_value = buf_get_u32(dbcon->value, 0, 32);
 
@@ -3129,7 +3129,7 @@ int xscale_init_arch_info(target_t *target, xscale_common_t *xscale, int chain_p
        xscale->armv4_5_mmu.enable_mmu_caches = xscale_enable_mmu_caches;
        xscale->armv4_5_mmu.has_tiny_pages = 1;
        xscale->armv4_5_mmu.mmu_enabled = 0;
-
+       
        xscale->fast_memory_access = 0;
 
        return ERROR_OK;
@@ -3261,6 +3261,7 @@ static int xscale_virt2phys(struct target_s *target, u32 virtual, u32 *physical)
        int domain;
        u32 ap;
        
+       
        if ((retval = xscale_get_arch_pointers(target, &armv4_5, &xscale)) != ERROR_OK)
        {
                return retval;
@@ -3270,7 +3271,6 @@ static int xscale_virt2phys(struct target_s *target, u32 virtual, u32 *physical)
        {
                return ret;
        }
-       
        *physical = ret;
        return ERROR_OK;
 }
@@ -3279,17 +3279,17 @@ static int xscale_mmu(struct target_s *target, int *enabled)
 {
        armv4_5_common_t *armv4_5 = target->arch_info;
        xscale_common_t *xscale = armv4_5->arch_info;
-
+       
        if (target->state != TARGET_HALTED)
        {
                ERROR("Target not halted");
                return ERROR_TARGET_INVALID;
        }
-       
        *enabled = xscale->armv4_5_mmu.mmu_enabled;
        return ERROR_OK;
 }
 
+
 int xscale_handle_mmu_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc)
 {
        target_t *target = get_current_target(cmd_ctx);
@@ -3558,7 +3558,6 @@ int xscale_handle_trace_image_command(struct command_context_s *cmd_ctx, char *c
 
        if (image_open(xscale->trace.image, args[0], (argc >= 3) ? args[2] : NULL) != ERROR_OK)
        {
-               command_print(cmd_ctx, "image opening error: %s", xscale->trace.image->error_str);
                free(xscale->trace.image);
                xscale->trace.image = NULL;
                return ERROR_OK;
@@ -3602,7 +3601,6 @@ int xscale_handle_dump_trace_command(struct command_context_s *cmd_ctx, char *cm
 
        if (fileio_open(&file, args[0], FILEIO_WRITE, FILEIO_BINARY) != ERROR_OK)
        {
-               command_print(cmd_ctx, "file open error: %s", file.error_str);
                return ERROR_OK;
        }
 
@@ -3792,6 +3790,7 @@ int xscale_register_commands(struct command_context_s *cmd_ctx)
        register_command(cmd_ctx, xscale_cmd, "cp15", xscale_handle_cp15, COMMAND_EXEC, "access coproc 15 <register> [value]");
        register_command(cmd_ctx, xscale_cmd, "fast_memory_access", handle_xscale_fast_memory_access_command,
                 COMMAND_ANY, "use fast memory accesses instead of slower but potentially unsafe slow accesses <enable|disable>");
+
        
        armv4_5_register_commands(cmd_ctx);
 

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)