|
|
|
@ -93,6 +93,8 @@ table_entry_t arch_name[] = {
|
|
|
|
|
{ IH_CPU_SH, "sh", "SuperH", },
|
|
|
|
|
{ IH_CPU_SPARC, "sparc", "SPARC", },
|
|
|
|
|
{ IH_CPU_SPARC64, "sparc64", "SPARC 64 Bit", },
|
|
|
|
|
{ IH_CPU_BLACKFIN, "blackfin", "Blackfin", },
|
|
|
|
|
{ IH_CPU_AVR32, "avr32", "AVR32", },
|
|
|
|
|
{ -1, "", "", },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -129,6 +131,7 @@ table_entry_t type_name[] = {
|
|
|
|
|
{ IH_TYPE_RAMDISK, "ramdisk", "RAMDisk Image", },
|
|
|
|
|
{ IH_TYPE_SCRIPT, "script", "Script", },
|
|
|
|
|
{ IH_TYPE_STANDALONE, "standalone", "Standalone Program", },
|
|
|
|
|
{ IH_TYPE_FLATDT, "flat_dt", "Flat Device Tree", },
|
|
|
|
|
{ -1, "", "", },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -276,7 +279,8 @@ NXTARG: ;
|
|
|
|
|
*/
|
|
|
|
|
if (xflag) {
|
|
|
|
|
if (ep != addr + sizeof(image_header_t)) {
|
|
|
|
|
fprintf (stderr, "%s: For XIP, the entry point must be the load addr + %lu\n",
|
|
|
|
|
fprintf (stderr,
|
|
|
|
|
"%s: For XIP, the entry point must be the load addr + %lu\n",
|
|
|
|
|
cmdname,
|
|
|
|
|
(unsigned long)sizeof(image_header_t));
|
|
|
|
|
exit (EXIT_FAILURE);
|
|
|
|
@ -346,8 +350,9 @@ NXTARG: ;
|
|
|
|
|
|
|
|
|
|
if (crc32 (0, data, len) != checksum) {
|
|
|
|
|
fprintf (stderr,
|
|
|
|
|
"*** Warning: \"%s\" has bad header checksum!\n",
|
|
|
|
|
imagefile);
|
|
|
|
|
"%s: ERROR: \"%s\" has bad header checksum!\n",
|
|
|
|
|
cmdname, imagefile);
|
|
|
|
|
exit (EXIT_FAILURE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
data = (char *)(ptr + sizeof(image_header_t));
|
|
|
|
@ -355,8 +360,9 @@ NXTARG: ;
|
|
|
|
|
|
|
|
|
|
if (crc32 (0, data, len) != ntohl(hdr->ih_dcrc)) {
|
|
|
|
|
fprintf (stderr,
|
|
|
|
|
"*** Warning: \"%s\" has corrupted data!\n",
|
|
|
|
|
imagefile);
|
|
|
|
|
"%s: ERROR: \"%s\" has corrupted data!\n",
|
|
|
|
|
cmdname, imagefile);
|
|
|
|
|
exit (EXIT_FAILURE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* for multi-file images we need the data part, too */
|
|
|
|
@ -383,7 +389,7 @@ NXTARG: ;
|
|
|
|
|
|
|
|
|
|
if (opt_type == IH_TYPE_MULTI || opt_type == IH_TYPE_SCRIPT) {
|
|
|
|
|
char *file = datafile;
|
|
|
|
|
unsigned long size;
|
|
|
|
|
uint32_t size;
|
|
|
|
|
|
|
|
|
|
for (;;) {
|
|
|
|
|
char *sep = NULL;
|
|
|
|
@ -440,7 +446,7 @@ NXTARG: ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* We're a bit of paranoid */
|
|
|
|
|
#if defined(_POSIX_SYNCHRONIZED_IO) && !defined(__sun__) && !defined(__FreeBSD__) && !defined(__APPLE__)
|
|
|
|
|
#if defined(_POSIX_SYNCHRONIZED_IO) && !defined(__sun__) && !defined(__FreeBSD__)
|
|
|
|
|
(void) fdatasync (ifd);
|
|
|
|
|
#else
|
|
|
|
|
(void) fsync (ifd);
|
|
|
|
@ -490,7 +496,7 @@ NXTARG: ;
|
|
|
|
|
(void) munmap((void *)ptr, sbuf.st_size);
|
|
|
|
|
|
|
|
|
|
/* We're a bit of paranoid */
|
|
|
|
|
#if defined(_POSIX_SYNCHRONIZED_IO) && !defined(__sun__) && !defined(__FreeBSD__) && !defined(__APPLE__)
|
|
|
|
|
#if defined(_POSIX_SYNCHRONIZED_IO) && !defined(__sun__) && !defined(__FreeBSD__)
|
|
|
|
|
(void) fdatasync (ifd);
|
|
|
|
|
#else
|
|
|
|
|
(void) fsync (ifd);
|
|
|
|
@ -628,7 +634,7 @@ print_header (image_header_t *hdr)
|
|
|
|
|
if (hdr->ih_type == IH_TYPE_MULTI || hdr->ih_type == IH_TYPE_SCRIPT) {
|
|
|
|
|
int i, ptrs;
|
|
|
|
|
uint32_t pos;
|
|
|
|
|
unsigned long *len_ptr = (unsigned long *) (
|
|
|
|
|
uint32_t *len_ptr = (uint32_t *) (
|
|
|
|
|
(unsigned long)hdr + sizeof(image_header_t)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|