@ -19,6 +19,8 @@
# include <libgen.h>
# include <getopt.h> /* for getopt() */
# include <stdarg.h>
# include <stdbool.h>
# include <endian.h>
# include <errno.h>
# include <sys/stat.h>
@ -123,6 +125,7 @@ static uint32_t reserved_space;
static struct file_info inspect_info ;
static int extract = 0 ;
static bool endian_swap = false ;
static const char md5salt_normal [ MD5SUM_LEN ] = {
0xdc , 0xd7 , 0x3a , 0xa5 , 0xc3 , 0x95 , 0x98 , 0xfb ,
@ -256,6 +259,7 @@ static void usage(int status)
" \n "
" Options: \n "
" -c use combined kernel image \n "
" -e swap endianness in kernel load address and entry point \n "
" -E <ep> overwrite kernel entry point with <ep> (hexval prefixed with 0x) \n "
" -L <la> overwrite kernel load address with <la> (hexval prefixed with 0x) \n "
" -H <hwid> use hardware id specified with <hwid> \n "
@ -521,6 +525,11 @@ static void fill_header(char *buf, int len)
) ;
}
if ( endian_swap ) {
hdr - > kernel_la = bswap_32 ( hdr - > kernel_la ) ;
hdr - > kernel_ep = bswap_32 ( hdr - > kernel_ep ) ;
}
get_md5 ( buf , len , hdr - > md5sum1 ) ;
}
@ -805,7 +814,7 @@ int main(int argc, char *argv[])
while ( 1 ) {
int c ;
c = getopt ( argc , argv , " a:H:E:F:L:m:V:N:W:C:ci:k:r:R:o:xX:hsSjv: " ) ;
c = getopt ( argc , argv , " a:H:E:F:L:m:V:N:W:C:ci:k:r:R:o:xX:e hsSjv: " ) ;
if ( c = = - 1 )
break ;
@ -873,6 +882,9 @@ int main(int argc, char *argv[])
case ' x ' :
extract = 1 ;
break ;
case ' e ' :
endian_swap = true ;
break ;
case ' h ' :
usage ( EXIT_SUCCESS ) ;
break ;