summaryrefslogtreecommitdiff
path: root/utils/sbtools/sbtoelf.c
diff options
context:
space:
mode:
authorAmaury Pouly <pamaury@rockbox.org>2011-07-24 19:12:18 +0000
committerAmaury Pouly <pamaury@rockbox.org>2011-07-24 19:12:18 +0000
commitde138033527908aab0b49950707a5eedec4e924d (patch)
treeac1b2df2ad7ab44075db89c178792281d36bca7a /utils/sbtools/sbtoelf.c
parent0157c624180a27c8109c93d182ed360920d43909 (diff)
downloadrockbox-de138033527908aab0b49950707a5eedec4e924d.tar.gz
rockbox-de138033527908aab0b49950707a5eedec4e924d.zip
sbtools: fix version output, add support for options section and product/component versions in command files
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30205 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'utils/sbtools/sbtoelf.c')
-rw-r--r--utils/sbtools/sbtoelf.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/utils/sbtools/sbtoelf.c b/utils/sbtools/sbtoelf.c
index f421f83848..d729357a56 100644
--- a/utils/sbtools/sbtoelf.c
+++ b/utils/sbtools/sbtoelf.c
@@ -339,7 +339,7 @@ static void extract_section(int data_sec, char name[5], byte *buf, int size, con
339 elf_release(&elf); 339 elf_release(&elf);
340} 340}
341 341
342void fill_section_name(char name[5], uint32_t identifier) 342static void fill_section_name(char name[5], uint32_t identifier)
343{ 343{
344 name[0] = (identifier >> 24) & 0xff; 344 name[0] = (identifier >> 24) & 0xff;
345 name[1] = (identifier >> 16) & 0xff; 345 name[1] = (identifier >> 16) & 0xff;
@@ -351,6 +351,18 @@ void fill_section_name(char name[5], uint32_t identifier)
351 name[4] = 0; 351 name[4] = 0;
352} 352}
353 353
354static uint16_t swap16(uint16_t t)
355{
356 return (t << 8) | (t >> 8);
357}
358
359static void fix_version(struct sb_version_t *ver)
360{
361 ver->major = swap16(ver->major);
362 ver->minor = swap16(ver->minor);
363 ver->revision = swap16(ver->revision);
364}
365
354static void extract(unsigned long filesize) 366static void extract(unsigned long filesize)
355{ 367{
356 struct sha_1_params_t sha_1_params; 368 struct sha_1_params_t sha_1_params;
@@ -433,16 +445,19 @@ static void extract(unsigned long filesize)
433 color(YELLOW); 445 color(YELLOW);
434 printf("%s", asctime(time)); 446 printf("%s", asctime(time));
435 447
448 struct sb_version_t product_ver = sb_header->product_ver;
449 fix_version(&product_ver);
450 struct sb_version_t component_ver = sb_header->component_ver;
451 fix_version(&component_ver);
452
436 color(GREEN); 453 color(GREEN);
437 printf(" Product version = "); 454 printf(" Product version = ");
438 color(YELLOW); 455 color(YELLOW);
439 printf("%X.%X.%X\n", sb_header->product_ver.major, 456 printf("%X.%X.%X\n", product_ver.major, product_ver.minor, product_ver.revision);
440 sb_header->product_ver.minor, sb_header->product_ver.revision);
441 color(GREEN); 457 color(GREEN);
442 printf(" Component version = "); 458 printf(" Component version = ");
443 color(YELLOW); 459 color(YELLOW);
444 printf("%X.%X.%X\n", sb_header->component_ver.major, 460 printf("%X.%X.%X\n", component_ver.major, component_ver.minor, component_ver.revision);
445 sb_header->component_ver.minor, sb_header->component_ver.revision);
446 461
447 color(GREEN); 462 color(GREEN);
448 printf(" Drive tag = "); 463 printf(" Drive tag = ");