Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(528)

Unified Diff: utility/vbutil_kernel.c

Issue 2859019: Add some debug output to vbutil_kernel, display values in hex. (Closed) Base URL: ssh://git@chromiumos-git//vboot_reference.git
Patch Set: Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: utility/vbutil_kernel.c
diff --git a/utility/vbutil_kernel.c b/utility/vbutil_kernel.c
index a9f7be4c99702a769185aafae6c4db7018008d51..81b9e445d93478bb5926337cf88da4fe94ec8132 100644
--- a/utility/vbutil_kernel.c
+++ b/utility/vbutil_kernel.c
@@ -7,6 +7,7 @@
#include <getopt.h>
#include <inttypes.h> /* For PRIu64 */
+#include <stdarg.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
@@ -18,6 +19,10 @@
#include "vboot_common.h"
+/* Global opt */
+static int opt_debug = 0;
+
+
/* Command line options */
enum {
OPT_MODE_PACK = 1000,
@@ -43,6 +48,7 @@ static struct option long_opts[] = {
{"bootloader", 1, 0, OPT_BOOTLOADER },
{"config", 1, 0, OPT_CONFIG },
{"pad", 1, 0, OPT_PAD },
+ {"debug", 0, &opt_debug, 1 },
{NULL, 0, 0, 0}
};
@@ -70,6 +76,17 @@ static int PrintHelp(void) {
return 1;
}
+static void Debug(const char *format, ...) {
+ if (!opt_debug)
+ return;
+
+ va_list ap;
+ va_start(ap, format);
+ fprintf(stderr, "DEBUG: ");
+ vfprintf(stderr, format, ap);
+ va_end(ap);
+}
+
/* Return the smallest integral multiple of [alignment] that is equal
* to or greater than [val]. Used to determine the number of
@@ -165,9 +182,11 @@ static int Pack(const char* outfile, const char* keyblock_file,
}
/* Read the config file */
+ Debug("Reading %s\n", config_file);
config_buf = ReadFile(config_file, &config_size);
if (!config_buf)
return 1;
+ Debug(" config file size=0x%" PRIx64 "\n", config_size);
if (CROS_CONFIG_SIZE <= config_size) { /* need room for trailing '\0' */
error("Config file %s is too large (>= %d bytes)\n",
config_file, CROS_CONFIG_SIZE);
@@ -179,14 +198,18 @@ static int Pack(const char* outfile, const char* keyblock_file,
config_buf[i] = ' ';
/* Read the bootloader */
+ Debug("Reading %s\n", bootloader_file);
bootloader_buf = ReadFile(bootloader_file, &bootloader_size);
if (!bootloader_buf)
return 1;
+ Debug(" bootloader file size=0x%" PRIx64 "\n", bootloader_size);
/* Read the kernel */
+ Debug("Reading %s\n", vmlinuz);
kernel_buf = ReadFile(vmlinuz, &kernel_size);
if (!kernel_buf)
return 1;
+ Debug(" kernel file size=0x%" PRIx64 "\n", kernel_size);
if (!kernel_size) {
error("Empty kernel file\n");
return 1;
@@ -201,6 +224,8 @@ static int Pack(const char* outfile, const char* keyblock_file,
return 1;
}
kernel32_size = kernel_size - kernel32_start;
+ Debug(" kernel32_start=0x%" PRIx64 "\n", kernel32_start);
+ Debug(" kernel32_size=0x%" PRIx64 "\n", kernel32_size);
/* Allocate and zero the blob we need. */
blob_size = roundup(kernel32_size, CROS_ALIGN) +
@@ -208,6 +233,7 @@ static int Pack(const char* outfile, const char* keyblock_file,
CROS_PARAMS_SIZE +
roundup(bootloader_size, CROS_ALIGN);
blob = (uint8_t *)Malloc(blob_size);
+ Debug("blob_size=0x%" PRIx64 "\n", blob_size);
if (!blob) {
error("Couldn't allocate %ld bytes.\n", blob_size);
return 1;
@@ -215,13 +241,16 @@ static int Pack(const char* outfile, const char* keyblock_file,
Memset(blob, 0, blob_size);
/* Copy the 32-bit kernel. */
+ Debug("kernel goes at blob+=0x%" PRIx64 "\n", now);
if (kernel32_size)
Memcpy(blob + now, kernel_buf + kernel32_start, kernel32_size);
now += roundup(now + kernel32_size, CROS_ALIGN);
+ Debug("config goes at blob+0x%" PRIx64 "\n", now);
/* Find the load address of the commandline. We'll need it later. */
cmdline_addr = CROS_32BIT_ENTRY_ADDR + now +
find_cmdline_start((char *)config_buf, config_size);
+ Debug(" cmdline_addr=0x%" PRIx64 "\n", cmdline_addr);
/* Copy the config. */
if (config_size)
@@ -230,6 +259,7 @@ static int Pack(const char* outfile, const char* keyblock_file,
/* The zeropage data is next. Overlay the linux_kernel_header onto it, and
* tweak a few fields. */
+ Debug("params goes at blob+=0x%" PRIx64 "\n", now);
params = (struct linux_kernel_params *)(blob + now);
Memcpy(&(params->setup_sects), &(lh->setup_sects),
sizeof(*lh) - offsetof(struct linux_kernel_header, setup_sects));
@@ -242,11 +272,15 @@ static int Pack(const char* outfile, const char* keyblock_file,
/* Finally, append the bootloader. Remember where it will load in
* memory, too. */
+ Debug("bootloader goes at blob+=0x%" PRIx64 "\n", now);
bootloader_mem_start = CROS_32BIT_ENTRY_ADDR + now;
bootloader_mem_size = roundup(bootloader_size, CROS_ALIGN);
+ Debug(" bootloader_mem_start=0x%" PRIx64 "\n", bootloader_mem_start);
+ Debug(" bootloader_mem_size=0x%" PRIx64 "\n", bootloader_mem_size);
if (bootloader_size)
Memcpy(blob + now, bootloader_buf, bootloader_size);
now += bootloader_mem_size;
+ Debug("end of blob is 0x%" PRIx64 "\n", now);
/* Free input buffers */
Free(kernel_buf);
@@ -274,11 +308,15 @@ static int Pack(const char* outfile, const char* keyblock_file,
}
/* Write the output file */
+ Debug("writing %s...\n", outfile);
f = fopen(outfile, "wb");
if (!f) {
error("Can't open output file %s\n", outfile);
return 1;
}
+ Debug("0x%" PRIx64 " bytes of key_block\n", key_block_size);
+ Debug("0x%" PRIx64 " bytes of preamble\n", preamble->preamble_size);
+ Debug("0x%" PRIx64 " bytes of blob\n", blob_size);
i = ((1 != fwrite(key_block, key_block_size, 1, f)) ||
(1 != fwrite(preamble, preamble->preamble_size, 1, f)) ||
(1 != fwrite(blob, blob_size, 1, f)));
@@ -361,11 +399,11 @@ static int Verify(const char* infile, const char* signpubkey) {
printf(" Header version: %" PRIu32 ".%" PRIu32"\n",
preamble->header_version_major, preamble->header_version_minor);
printf(" Kernel version: %" PRIu64 "\n", preamble->kernel_version);
- printf(" Body load address: %" PRIu64 "\n", preamble->body_load_address);
- printf(" Body size: %" PRIu64 "\n",
+ printf(" Body load address: 0x%" PRIx64 "\n", preamble->body_load_address);
+ printf(" Body size: 0x%" PRIx64 "\n",
preamble->body_signature.data_size);
- printf(" Bootloader address: %" PRIu64 "\n", preamble->bootloader_address);
- printf(" Bootloader size: %" PRIu64 "\n", preamble->bootloader_size);
+ printf(" Bootloader address: 0x%" PRIx64 "\n", preamble->bootloader_address);
+ printf(" Bootloader size: 0x%" PRIx64 "\n", preamble->bootloader_size);
/* Verify body */
if (0 != VerifyData(blob + now, &preamble->body_signature, rsa)) {
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698