[coreboot] Patch set updated for coreboot: 0c3dbd2 cbfstool: Add -v (verbose) output.

Hung-Te Lin (hungte@chromium.org) gerrit at coreboot.org
Tue Jan 29 05:39:30 CET 2013


Hung-Te Lin (hungte at chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2196

-gerrit

commit 0c3dbd2da6faba642948875ffa37582815797ea2
Author: Hung-Te Lin <hungte at chromium.org>
Date:   Mon Jan 28 14:39:43 2013 +0800

    cbfstool: Add -v (verbose) output.
    
    Add -v (verbose) to every commands, and allow printing debug messages.
    
    Revised logging and debugging functions (fprintf(stderr,...), dprintf...)
    and verbose message printing with following macros:
    	ERROR(xxx):	E: xxx
    	WARN(xxx)	W: xxx
    	LOG(xxx)	xxx
    	INFO(...)	INFO: xxx  (only when runs with -v )
    	DEBUG(...)	DEBUG: xxx (only when runs with more than one -v)
    
    Example:
    	cbfstool coreboot.rom print -v
    	cbfstool coreboot.rom add -f file -n file -t raw -v -v
    
    Normal output (especially for parsing) should use printf, not any of these
    macros (See usage() and cbfs_locate(), cbfs_print_directory() for example).
    
    Change-Id: I167617da1a6eea2b07075b0eb38e3c9d85ea75dc
    Signed-off-by: Hung-Te Lin <hungte at chromium.org>
---
 util/cbfstool/cbfs-mkpayload.c |   4 +-
 util/cbfstool/cbfs-mkstage.c   |  10 ++--
 util/cbfstool/cbfstool.c       | 109 +++++++++++++++++++++--------------------
 util/cbfstool/common.c         |  90 ++++++++++++++++------------------
 util/cbfstool/common.h         |   8 +++
 util/cbfstool/compress.c       |   2 +-
 6 files changed, 114 insertions(+), 109 deletions(-)

diff --git a/util/cbfstool/cbfs-mkpayload.c b/util/cbfstool/cbfs-mkpayload.c
index 7f01024..da04a75 100644
--- a/util/cbfstool/cbfs-mkpayload.c
+++ b/util/cbfstool/cbfs-mkpayload.c
@@ -44,13 +44,13 @@ int parse_elf_to_payload(unsigned char *input, unsigned char **output,
 	int i;
 
 	if(!iself(input)){
-		fprintf(stderr, "E: The payload file is not in ELF format!\n");
+		ERROR("The payload file is not in ELF format!\n");
 		return -1;
 	}
 
 	if (!((ehdr->e_machine == EM_ARM) && (arch == CBFS_ARCHITECTURE_ARMV7)) &&
 	    !((ehdr->e_machine == EM_386) && (arch == CBFS_ARCHITECTURE_X86))) {
-		fprintf(stderr, "E: The payload file has the wrong architecture\n");
+		ERROR("The payload file has the wrong architecture\n");
 		return -1;
 	}
 
diff --git a/util/cbfstool/cbfs-mkstage.c b/util/cbfstool/cbfs-mkstage.c
index b54af10..ef5182a 100644
--- a/util/cbfstool/cbfs-mkstage.c
+++ b/util/cbfstool/cbfs-mkstage.c
@@ -64,13 +64,13 @@ int parse_elf_to_stage(unsigned char *input, unsigned char **output,
 		return -1;
 
 	if (!iself(input)) {
-		fprintf(stderr, "E: The stage file is not in ELF format!\n");
+		ERROR("The stage file is not in ELF format!\n");
 		return -1;
 	}
 
 	if (!((ehdr->e_machine == EM_ARM) && (arch == CBFS_ARCHITECTURE_ARMV7)) &&
 	    !((ehdr->e_machine == EM_386) && (arch == CBFS_ARCHITECTURE_X86))) {
-		fprintf(stderr, "E: The stage file has the wrong architecture\n");
+		ERROR("The stage file has the wrong architecture\n");
 		return -1;
 	}
 
@@ -126,7 +126,7 @@ int parse_elf_to_stage(unsigned char *input, unsigned char **output,
 	}
 
 	if (data_end <= data_start) {
-		fprintf(stderr, "E: data ends before it starts. Make sure the "
+		ERROR("data ends before it starts. Make sure the "
 			"ELF file is correct and resides in ROM space.\n");
 		exit(1);
 	}
@@ -135,7 +135,7 @@ int parse_elf_to_stage(unsigned char *input, unsigned char **output,
 	buffer = calloc(data_end - data_start, 1);
 
 	if (buffer == NULL) {
-		fprintf(stderr, "E: Unable to allocate memory: %m\n");
+		ERROR("Unable to allocate memory: %m\n");
 		return -1;
 	}
 
@@ -165,7 +165,7 @@ int parse_elf_to_stage(unsigned char *input, unsigned char **output,
 	out = calloc(sizeof(struct cbfs_stage) + data_end - data_start, 1);
 
 	if (out == NULL) {
-		fprintf(stderr, "E: Unable to allocate memory: %m\n");
+		ERROR("Unable to allocate memory: %m\n");
 		return -1;
 	}
 
diff --git a/util/cbfstool/cbfstool.c b/util/cbfstool/cbfstool.c
index 824b40e..af5562b 100644
--- a/util/cbfstool/cbfstool.c
+++ b/util/cbfstool/cbfstool.c
@@ -59,30 +59,30 @@ static int cbfs_add(void)
 	void *rom, *filedata, *cbfsfile;
 
 	if (!param.filename) {
-		fprintf(stderr, "E: You need to specify -f/--filename.\n");
+		ERROR("You need to specify -f/--filename.\n");
 		return 1;
 	}
 
 	if (!param.name) {
-		fprintf(stderr, "E: You need to specify -n/--name.\n");
+		ERROR("You need to specify -n/--name.\n");
 		return 1;
 	}
 
 	if (param.type == 0) {
-		fprintf(stderr, "E: You need to specify a valid -t/--type.\n");
+		ERROR("You need to specify a valid -t/--type.\n");
 		return 1;
 	}
 
 	rom = loadrom(param.cbfs_name);
 	if (rom == NULL) {
-		fprintf(stderr, "E: Could not load ROM image '%s'.\n",
+		ERROR("Could not load ROM image '%s'.\n",
 			param.cbfs_name);
 		return 1;
 	}
 
 	filedata = loadfile(param.filename, &filesize, 0, SEEK_SET);
 	if (filedata == NULL) {
-		fprintf(stderr, "E: Could not load file '%s'.\n",
+		ERROR("Could not load file '%s'.\n",
 			param.filename);
 		free(rom);
 		return 1;
@@ -93,7 +93,7 @@ static int cbfs_add(void)
 	free(filedata);
 
 	if (add_file_to_cbfs(cbfsfile, filesize, param.baseaddress)) {
-		fprintf(stderr, "E: Adding file '%s' failed.\n", param.filename);
+		ERROR("Adding file '%s' failed.\n", param.filename);
 		free(cbfsfile);
 		free(rom);
 		return 1;
@@ -116,25 +116,25 @@ static int cbfs_add_payload(void)
 	unsigned char *payload;
 
 	if (!param.filename) {
-		fprintf(stderr, "E: You need to specify -f/--filename.\n");
+		ERROR("You need to specify -f/--filename.\n");
 		return 1;
 	}
 
 	if (!param.name) {
-		fprintf(stderr, "E: You need to specify -n/--name.\n");
+		ERROR("You need to specify -n/--name.\n");
 		return 1;
 	}
 
 	rom = loadrom(param.cbfs_name);
 	if (rom == NULL) {
-		fprintf(stderr, "E: Could not load ROM image '%s'.\n",
+		ERROR("Could not load ROM image '%s'.\n",
 			param.cbfs_name);
 		return 1;
 	}
 
 	filedata = loadfile(param.filename, &filesize, 0, SEEK_SET);
 	if (filedata == NULL) {
-		fprintf(stderr, "E: Could not load file '%s'.\n",
+		ERROR("Could not load file '%s'.\n",
 			param.filename);
 		free(rom);
 		return 1;
@@ -142,7 +142,7 @@ static int cbfs_add_payload(void)
 
 	filesize = parse_elf_to_payload(filedata, &payload, param.algo);
 	if (filesize <= 0) {
-		fprintf(stderr, "E: Adding payload '%s' failed.\n",
+		ERROR("Adding payload '%s' failed.\n",
 			param.filename);
 		free(rom);
 		return 1;
@@ -155,7 +155,7 @@ static int cbfs_add_payload(void)
 	free(payload);
 
 	if (add_file_to_cbfs(cbfsfile, filesize, param.baseaddress)) {
-		fprintf(stderr, "E: Adding payload '%s' failed.\n",
+		ERROR("Adding payload '%s' failed.\n",
 			param.filename);
 		free(cbfsfile);
 		free(rom);
@@ -180,25 +180,25 @@ static int cbfs_add_stage(void)
 	unsigned char *stage;
 
 	if (!param.filename) {
-		fprintf(stderr, "E: You need to specify -f/--filename.\n");
+		ERROR("You need to specify -f/--filename.\n");
 		return 1;
 	}
 
 	if (!param.name) {
-		fprintf(stderr, "E: You need to specify -n/--name.\n");
+		ERROR("You need to specify -n/--name.\n");
 		return 1;
 	}
 
 	rom = loadrom(param.cbfs_name);
 	if (rom == NULL) {
-		fprintf(stderr, "E: Could not load ROM image '%s'.\n",
+		ERROR("Could not load ROM image '%s'.\n",
 			param.cbfs_name);
 		return 1;
 	}
 
 	filedata = loadfile(param.filename, &filesize, 0, SEEK_SET);
 	if (filedata == NULL) {
-		fprintf(stderr, "E: Could not load file '%s'.\n",
+		ERROR("Could not load file '%s'.\n",
 			param.filename);
 		free(rom);
 		return 1;
@@ -213,7 +213,7 @@ static int cbfs_add_stage(void)
 	free(stage);
 
 	if (add_file_to_cbfs(cbfsfile, filesize, param.baseaddress)) {
-		fprintf(stderr, "E: Adding stage '%s' failed.\n",
+		ERROR("Adding stage '%s' failed.\n",
 			param.filename);
 		free(cbfsfile);
 		free(rom);
@@ -242,23 +242,23 @@ static int cbfs_add_flat_binary(void)
 	int doffset, len = 0;
 
 	if (!param.filename) {
-		fprintf(stderr, "E: You need to specify -f/--filename.\n");
+		ERROR("You need to specify -f/--filename.\n");
 		return 1;
 	}
 
 	if (!param.name) {
-		fprintf(stderr, "E: You need to specify -n/--name.\n");
+		ERROR("You need to specify -n/--name.\n");
 		return 1;
 	}
 
 	if (param.loadaddress == 0) {
-		fprintf(stderr, "E: You need to specify a valid "
+		ERROR("You need to specify a valid "
 			"-l/--load-address.\n");
 		return 1;
 	}
 
 	if (param.entrypoint == 0) {
-		fprintf(stderr, "E: You need to specify a valid "
+		ERROR("You need to specify a valid "
 			"-e/--entry-point.\n");
 		return 1;
 	}
@@ -269,14 +269,14 @@ static int cbfs_add_flat_binary(void)
 
 	rom = loadrom(param.cbfs_name);
 	if (rom == NULL) {
-		fprintf(stderr, "E: Could not load ROM image '%s'.\n",
+		ERROR("Could not load ROM image '%s'.\n",
 			param.cbfs_name);
 		return 1;
 	}
 
 	filedata = loadfile(param.filename, &filesize, 0, SEEK_SET);
 	if (filedata == NULL) {
-		fprintf(stderr, "E: Could not load file '%s'.\n",
+		ERROR("Could not load file '%s'.\n",
 			param.filename);
 		free(rom);
 		return 1;
@@ -285,7 +285,7 @@ static int cbfs_add_flat_binary(void)
 	/* FIXME compressed file size might be bigger than original file */
 	payload = calloc((2 * sizeof(struct cbfs_payload_segment)) + filesize, 1);
 	if (payload == NULL) {
-		fprintf(stderr, "E: Could not allocate memory.\n");
+		ERROR("Could not allocate memory.\n");
 		free(filedata);
 		free(rom);
 		return 1;
@@ -323,7 +323,7 @@ static int cbfs_add_flat_binary(void)
 	free(payload);
 
 	if (add_file_to_cbfs(cbfsfile, final_size, param.baseaddress)) {
-		fprintf(stderr, "E: Adding payload '%s' failed.\n",
+		ERROR("Adding payload '%s' failed.\n",
 			param.filename);
 		free(cbfsfile);
 		free(rom);
@@ -345,19 +345,19 @@ static int cbfs_remove(void)
 	void *rom;
 
 	if (!param.name) {
-		fprintf(stderr, "E: You need to specify -n/--name.\n");
+		ERROR("You need to specify -n/--name.\n");
 		return 1;
 	}
 
 	rom = loadrom(param.cbfs_name);
 	if (rom == NULL) {
-		fprintf(stderr, "E: Could not load ROM image '%s'.\n",
+		ERROR("Could not load ROM image '%s'.\n",
 			param.cbfs_name);
 		return 1;
 	}
 
 	if (remove_file_from_cbfs(param.name)) {
-		fprintf(stderr, "E: Removing file '%s' failed.\n",
+		ERROR("Removing file '%s' failed.\n",
 			param.name);
 		free(rom);
 		return 1;
@@ -375,17 +375,17 @@ static int cbfs_remove(void)
 static int cbfs_create(void)
 {
 	if (param.size == 0) {
-		fprintf(stderr, "E: You need to specify a valid -s/--size.\n");
+		ERROR("You need to specify a valid -s/--size.\n");
 		return 1;
 	}
 
 	if (!param.bootblock) {
-		fprintf(stderr, "E: You need to specify -b/--bootblock.\n");
+		ERROR("You need to specify -b/--bootblock.\n");
 		return 1;
 	}
 
 	if (arch == CBFS_ARCHITECTURE_UNKNOWN) {
-		fprintf(stderr, "E: You need to specify -m/--machine arch\n");
+		ERROR("You need to specify -m/--machine arch\n");
 		return 1;
 	}
 
@@ -398,12 +398,12 @@ static int cbfs_locate(void)
 	uint32_t filesize, location;
 
 	if (!param.filename) {
-		fprintf(stderr, "E: You need to specify -f/--filename.\n");
+		ERROR("You need to specify -f/--filename.\n");
 		return 1;
 	}
 
 	if (!param.name) {
-		fprintf(stderr, "E: You need to specify -n/--name.\n");
+		ERROR("You need to specify -n/--name.\n");
 		return 1;
 	}
 
@@ -422,7 +422,7 @@ static int cbfs_print(void)
 
 	rom = loadrom(param.cbfs_name);
 	if (rom == NULL) {
-		fprintf(stderr, "E: Could not load ROM image '%s'.\n",
+		ERROR("Could not load ROM image '%s'.\n",
 			param.cbfs_name);
 		return 1;
 	}
@@ -439,18 +439,18 @@ static int cbfs_extract(void)
 	int ret;
 
 	if (!param.filename) {
-		fprintf(stderr, "E: You need to specify -f/--filename.\n");
+		ERROR("You need to specify -f/--filename.\n");
 		return 1;
 	}
 
 	if (!param.name) {
-		fprintf(stderr, "E: You need to specify -n/--name.\n");
+		ERROR("You need to specify -n/--name.\n");
 		return 1;
 	}
 
 	rom = loadrom(param.cbfs_name);
 	if (rom == NULL) {
-		fprintf(stderr, "E: Could not load ROM image '%s'.\n",
+		ERROR("Could not load ROM image '%s'.\n",
 			param.cbfs_name);
 		return 1;
 	}
@@ -462,15 +462,15 @@ static int cbfs_extract(void)
 }
 
 static const struct command commands[] = {
-	{"add", "f:n:t:b:h?", cbfs_add},
-	{"add-payload", "f:n:t:c:b:h?", cbfs_add_payload},
-	{"add-stage", "f:n:t:c:b:h?", cbfs_add_stage},
-	{"add-flat-binary", "f:n:l:e:c:b:h?", cbfs_add_flat_binary},
-	{"remove", "n:h?", cbfs_remove},
-	{"create", "s:B:a:o:m:h?", cbfs_create},
-	{"locate", "f:n:a:h?", cbfs_locate},
-	{"print", "h?", cbfs_print},
-	{"extract", "n:f:h?", cbfs_extract},
+	{"add", "f:n:t:b:vh?", cbfs_add},
+	{"add-payload", "f:n:t:c:b:vh?", cbfs_add_payload},
+	{"add-stage", "f:n:t:c:b:vh?", cbfs_add_stage},
+	{"add-flat-binary", "f:n:l:e:c:b:vh?", cbfs_add_flat_binary},
+	{"remove", "n:vh?", cbfs_remove},
+	{"create", "s:B:a:o:m:vh?", cbfs_create},
+	{"locate", "f:n:a:vh?", cbfs_locate},
+	{"print", "vh?", cbfs_print},
+	{"extract", "n:f:vh?", cbfs_extract},
 };
 
 static struct option long_options[] = {
@@ -496,8 +496,9 @@ static void usage(char *name)
 	printf
 	    ("cbfstool: Management utility for CBFS formatted ROM images\n\n"
 	     "USAGE:\n" " %s [-h]\n"
-	     " %s FILE COMMAND [PARAMETERS]...\n\n" "OPTIONs:\n"
-	     "  -h		Display this help message\n\n"
+	     " %s FILE COMMAND [-v] [PARAMETERS]...\n\n" "OPTIONs:\n"
+	     "  -v              Provide verbose output\n"
+	     "  -h              Display this help message\n\n"
 	     "COMMANDs:\n"
 	     " add -f FILE -n NAME -t TYPE [-b base-address]               "
 			"Add a component\n"
@@ -570,8 +571,8 @@ int main(int argc, char **argv)
 			/* filter out illegal long options */
 			if (strchr(commands[i].optstring, c) == NULL) {
 				/* TODO maybe print actual long option instead */
-				printf("%s: invalid option -- '%c'\n",
-					argv[0], c);
+				ERROR("%s: invalid option -- '%c'\n",
+				      argv[0], c);
 				c = '?';
 			}
 
@@ -585,7 +586,7 @@ int main(int argc, char **argv)
 				else
 					param.type = strtoul(optarg, NULL, 0);
 				if (param.type == 0)
-					printf("W: Unknown type '%s' ignored\n",
+					WARN("Unknown type '%s' ignored\n",
 							optarg);
 				break;
 			case 'c':
@@ -594,8 +595,8 @@ int main(int argc, char **argv)
 				else if (!strncasecmp(optarg, "none", 5))
 					param.algo = CBFS_COMPRESS_NONE;
 				else
-					printf("W: Unknown compression '%s'"
-							" ignored.\n", optarg);
+					WARN("Unknown compression '%s'"
+					     " ignored.\n", optarg);
 				break;
 			case 'b':
 				param.baseaddress = strtoul(optarg, NULL, 0);
@@ -645,7 +646,7 @@ int main(int argc, char **argv)
 		return commands[i].function();
 	}
 
-	printf("Unknown command '%s'.\n", cmd);
+	ERROR("Unknown command '%s'.\n", cmd);
 	usage(argv[0]);
 	return 1;
 }
diff --git a/util/cbfstool/common.c b/util/cbfstool/common.c
index 97bf168..8b4b4b4 100644
--- a/util/cbfstool/common.c
+++ b/util/cbfstool/common.c
@@ -27,8 +27,6 @@
 #include "cbfs.h"
 #include "elf.h"
 
-#define dprintf(x...)
-
 size_t getfilesize(const char *filename)
 {
 	size_t size;
@@ -55,15 +53,15 @@ void *loadfile(const char *filename, uint32_t * romsize_p, void *content,
 	if (!content) {
 		content = malloc(*romsize_p);
 		if (!content) {
-			fprintf(stderr, "E: Could not get %d bytes for file %s\n",
-			       *romsize_p, filename);
+			ERROR("Could not get %d bytes for file %s\n",
+			      *romsize_p, filename);
 			exit(1);
 		}
 	} else if (place == SEEK_END)
 		content -= *romsize_p;
 
 	if (!fread(content, *romsize_p, 1, file)) {
-		fprintf(stderr, "E: Failed to read %s\n", filename);
+		ERROR("Failed to read %s\n", filename);
 		return NULL;
 	}
 	fclose(file);
@@ -138,14 +136,14 @@ int find_master_header(void *romarea, size_t size)
 void recalculate_rom_geometry(void *romarea)
 {
 	if (find_master_header(romarea, romsize)) {
-		fprintf(stderr, "E: Cannot find master header\n");
+		ERROR("Cannot find master header\n");
 		exit(1);
 	}
 
 	/* Update old headers */
 	if (master_header->version == CBFS_HEADER_VERSION1 &&
 	    ntohl(master_header->architecture) == CBFS_ARCHITECTURE_UNKNOWN) {
-		dprintf("Updating CBFS master header to version 2\n");
+		DEBUG("Updating CBFS master header to version 2\n");
 		master_header->architecture = htonl(CBFS_ARCHITECTURE_X86);
 	}
 
@@ -165,7 +163,7 @@ void recalculate_rom_geometry(void *romarea)
 		     sizeof(struct cbfs_header)) & 0xffffffff;
 		break;
 	default:
-		fprintf(stderr, "E: Unknown architecture\n");
+		ERROR("Unknown architecture\n");
 		exit(1);
 	}
 
@@ -185,13 +183,13 @@ int writerom(const char *filename, void *start, uint32_t size)
 {
 	FILE *file = fopen(filename, "wb");
 	if (!file) {
-		fprintf(stderr, "Could not open '%s' for writing: ", filename);
+		ERROR("Could not open '%s' for writing: ", filename);
 		perror("");
 		return 1;
 	}
 
 	if (fwrite(start, size, 1, file) != 1) {
-		fprintf(stderr, "Could not write to '%s': ", filename);
+		ERROR("Could not write to '%s': ", filename);
 		perror("");
 		return 1;
 	}
@@ -247,9 +245,9 @@ void print_supported_filetypes(void)
 	int i, number = ARRAY_SIZE(filetypes);
 
 	for (i=0; i<number; i++) {
-		printf(" %s%c", filetypes[i].name, (i==(number-1))?'\n':',');
+		LOG(" %s%c", filetypes[i].name, (i==(number-1))?'\n':',');
 		if ((i%8) == 7)
-			printf("\n");
+			LOG("\n");
 	}
 }
 
@@ -273,11 +271,12 @@ uint64_t intfiletype(const char *name)
 
 void print_cbfs_directory(const char *filename)
 {
-	printf
-		("%s: %d kB, bootblocksize %d, romsize %d, offset 0x%x\n"
-		 "alignment: %d bytes, architecture: %s\n\n",
-		 basename((char *)filename), romsize / 1024, ntohl(master_header->bootblocksize),
-		 romsize, ntohl(master_header->offset), align, arch_to_string(arch));
+	printf("%s: %d kB, bootblocksize %d, romsize %d, offset 0x%x\n"
+	       "alignment: %d bytes, architecture: %s\n\n",
+	       basename((char *)filename), romsize / 1024,
+	       ntohl(master_header->bootblocksize),
+	       romsize, ntohl(master_header->offset), align,
+	       arch_to_string(arch));
 	printf("%-30s %-10s %-12s Size\n", "Name", "Offset", "Type");
 	uint32_t current = phys_start;
 	while (current < phys_end) {
@@ -301,7 +300,7 @@ void print_cbfs_directory(const char *filename)
 		case CBFS_COMPONENT_STAGE:
 		{
 			struct cbfs_stage *stage = CBFS_SUBHEADER(thisfile);
-			dprintf("    %s compression, entry: 0x%llx, load: 0x%llx, length: %d/%d\n",
+			INFO("    %s compression, entry: 0x%llx, load: 0x%llx, length: %d/%d\n",
 			       stage->compression == CBFS_COMPRESS_LZMA ? "LZMA" : "no",
 			       (unsigned long long)stage->entry,
 			       (unsigned long long)stage->load,
@@ -316,7 +315,7 @@ void print_cbfs_directory(const char *filename)
 				switch(payload->type) {
 				case PAYLOAD_SEGMENT_CODE:
 				case PAYLOAD_SEGMENT_DATA:
-					dprintf("    %s (%s compression, offset: 0x%x, load: 0x%llx, length: %d/%d)\n",
+					INFO("    %s (%s compression, offset: 0x%x, load: 0x%llx, length: %d/%d)\n",
 						payload->type == PAYLOAD_SEGMENT_CODE ? "code " : "data" ,
 						payload->compression == CBFS_COMPRESS_LZMA ? "LZMA" : "no",
 						ntohl(payload->offset),
@@ -324,16 +323,16 @@ void print_cbfs_directory(const char *filename)
 						ntohl(payload->len), ntohl(payload->mem_len));
 					break;
 				case PAYLOAD_SEGMENT_ENTRY:
-					dprintf("    entry (0x%llx)\n", (unsigned long long)ntohll(payload->load_addr));
+					INFO("    entry (0x%llx)\n", (unsigned long long)ntohll(payload->load_addr));
 					break;
 				case PAYLOAD_SEGMENT_BSS:
-					dprintf("    BSS (address 0x%016llx, length 0x%x)\n", (unsigned long long)ntohll(payload->load_addr), ntohl(payload->len));
+					INFO("    BSS (address 0x%016llx, length 0x%x)\n", (unsigned long long)ntohll(payload->load_addr), ntohl(payload->len));
 					break;
 				case PAYLOAD_SEGMENT_PARAMS:
-					dprintf("    parameters\n");
+					INFO("    parameters\n");
 					break;
 				default:
-					dprintf("    %x (%s compression, offset: 0x%x, load: 0x%llx, length: %d/%d\n",
+					INFO("    %x (%s compression, offset: 0x%x, load: 0x%llx, length: %d/%d\n",
 						payload->type,
 						payload->compression == CBFS_COMPRESS_LZMA ? "LZMA" : "no",
 						ntohl(payload->offset),
@@ -387,7 +386,7 @@ int extract_file_from_cbfs(const char *filename, const char *payloadname, const
 		}
 
 		// Else, it's our file.
-		printf("Found file %.30s at 0x%x, type %.12s, size %d\n", fname,
+		LOG("Found file %.30s at 0x%x, type %.12s, size %d\n", fname,
 		       current - phys_start, strfiletype(ntohl(thisfile->type)),
 		       length);
 
@@ -395,25 +394,25 @@ int extract_file_from_cbfs(const char *filename, const char *payloadname, const
 		outfile = fopen(outpath, "wb");
 		if (!outfile)
 		{
-			fprintf(stderr, "E: Could not open the file %s for writing.\n", outpath);
+			ERROR("Could not open the file %s for writing.\n", outpath);
 			return 1;
 		}
 
 		if (ntohl(thisfile->type) != CBFS_COMPONENT_RAW)
 		{
-			fprintf(stderr, "W: Only 'raw' files are safe to extract.\n");
+			WARN("Only 'raw' files are safe to extract.\n");
 		}
 
 		fwrite(((char *)thisfile)
 				+ ntohl(thisfile->offset), length, 1, outfile);
 
 		fclose(outfile);
-		printf("Successfully dumped the file.\n");
+		LOG("Successfully dumped the file.\n");
 
 		// We'll only dump one file.
 		return 0;
 	}
-	fprintf(stderr, "E: File %s not found.\n", payloadname);
+	ERROR("File %s not found.\n", payloadname);
 	return 1;
 }
 
@@ -430,18 +429,17 @@ int add_file_to_cbfs(void *content, uint32_t contentsize, uint32_t location)
 		    (struct cbfs_file *)phys_to_virt(current);
 		uint32_t length = ntohl(thisfile->len);
 
-		dprintf("at %x, %x bytes\n", current, length);
+		DEBUG("at %x, %x bytes\n", current, length);
 		/* Is this a free chunk? */
 		if ((thisfile->type == CBFS_COMPONENT_DELETED)
 		    || (thisfile->type == CBFS_COMPONENT_NULL)) {
-			dprintf("null||deleted at %x, %x bytes\n", current,
+			DEBUG("null||deleted at %x, %x bytes\n", current,
 				length);
 			/* if this is the right size, and if specified, the right location, use it */
 			if ((contentsize <= length)
 			    && ((location == 0) || (current == location))) {
 				if (contentsize < length) {
-					dprintf
-					    ("this chunk is %x bytes, we need %x. create a new chunk at %x with %x bytes\n",
+					DEBUG("this chunk is %x bytes, we need %x. create a new chunk at %x with %x bytes\n",
 					     length, contentsize,
 					     ALIGN(current + contentsize,
 						   align),
@@ -454,7 +452,7 @@ int add_file_to_cbfs(void *content, uint32_t contentsize, uint32_t location)
 					    sizeof(struct cbfs_file);
 					cbfs_create_empty_file(start, size);
 				}
-				dprintf("copying data\n");
+				DEBUG("copying data\n");
 				memcpy(phys_to_virt(current), content,
 				       contentsize);
 				return 0;
@@ -463,8 +461,7 @@ int add_file_to_cbfs(void *content, uint32_t contentsize, uint32_t location)
 				/* CBFS has the constraint that the chain always moves up in memory. so once
 				   we're past the place we seek, we don't need to look any further */
 				if (current > location) {
-					fprintf
-					    (stderr, "E: The requested space is not available\n");
+					ERROR("The requested space is not available\n");
 					return 1;
 				}
 
@@ -473,7 +470,7 @@ int add_file_to_cbfs(void *content, uint32_t contentsize, uint32_t location)
 				    && ((location + contentsize) <=
 					(current + length))) {
 					/* Split it up. In the next iteration the code will be at the right place. */
-					dprintf("split up. new length: %x\n",
+					DEBUG("split up. new length: %x\n",
 						location - current -
 						ntohl(thisfile->offset));
 					thisfile->len =
@@ -490,8 +487,8 @@ int add_file_to_cbfs(void *content, uint32_t contentsize, uint32_t location)
 		    ALIGN(current + ntohl(thisfile->len) +
 			  ntohl(thisfile->offset), align);
 	}
-	fprintf(stderr, "E: Could not add the file to CBFS, it's probably too big.\n");
-	fprintf(stderr, "E: File size: %d bytes (%d KB).\n", contentsize, contentsize/1024);
+	ERROR("Could not add the file to CBFS, it's probably too big.\n");
+	ERROR("File size: %d bytes (%d KB).\n", contentsize, contentsize/1024);
 	return 1;
 }
 
@@ -546,7 +543,7 @@ int remove_file_from_cbfs(const char *filename)
 
 		return 0;
 	}
-	fprintf(stderr, "E: CBFS file %s not found.\n", filename);
+	ERROR("CBFS file %s not found.\n", filename);
 	return 1;
 }
 
@@ -572,7 +569,7 @@ void *create_cbfs_file(const char *filename, void *data, uint32_t * datasize,
 	}
 	void *newdata = malloc(*datasize + headersize);
 	if (!newdata) {
-		fprintf(stderr, "E: Could not get %d bytes for CBFS file.\n", *datasize +
+		ERROR("Could not get %d bytes for CBFS file.\n", *datasize +
 		       headersize);
 		exit(1);
 	}
@@ -599,7 +596,7 @@ int create_cbfs_image(const char *romfile, uint32_t _romsize,
 	romsize = _romsize;
 	romarea = malloc(romsize);
 	if (!romarea) {
-		fprintf(stderr, "E: Could not get %d bytes of memory"
+		ERROR("Could not get %d bytes of memory"
 			" for CBFS image.\n", romsize);
 		exit(1);
 	}
@@ -611,7 +608,7 @@ int create_cbfs_image(const char *romfile, uint32_t _romsize,
 	bootblk = loadfile(bootblock, &bootblocksize,
 				romarea + romsize, SEEK_END);
 	if (!bootblk) {
-		fprintf(stderr, "E: Could not load bootblock %s.\n",
+		ERROR("Could not load bootblock %s.\n",
 			bootblock);
 		free(romarea);
 		return 1;
@@ -641,8 +638,8 @@ int create_cbfs_image(const char *romfile, uint32_t _romsize,
 			if (*(uint32_t *)p == 0xdeadbeef)
 				break;
 			if (p >= (romarea + _romsize)) {
-				fprintf(stderr, "E: Could not determine CBFS "
-					"header location.\n", bootblock);
+				ERROR("Could not determine CBFS "
+				      "header location.\n");
 				return 1;
 			}
 			p += (sizeof(unsigned int));
@@ -700,7 +697,7 @@ int create_cbfs_image(const char *romfile, uint32_t _romsize,
 
 	default:
 		// Should not happen.
-		fprintf(stderr, "E: You found a bug in cbfstool.\n");
+		ERROR("You found a bug in cbfstool.\n");
 		exit(1);
 	}
 
@@ -724,8 +721,7 @@ uint32_t cbfs_find_location(const char *romfile, uint32_t filesize,
 
 	rom = loadrom(romfile);
 	if (rom == NULL) {
-		fprintf(stderr, "E: Could not load ROM image '%s'.\n",
-			romfile);
+		ERROR("Could not load ROM image '%s'.\n", romfile);
 		return 0;
 	}
 
diff --git a/util/cbfstool/common.h b/util/cbfstool/common.h
index 853e529..bb18ee1 100644
--- a/util/cbfstool/common.h
+++ b/util/cbfstool/common.h
@@ -29,6 +29,14 @@
 #define ntohll(x) (host_bigendian?(x):swab64(x))
 #define htonll(x) (host_bigendian?(x):swab64(x))
 
+/* Message output */
+extern int verbose;
+#define ERROR(x...) { fprintf(stderr, "E: " x); }
+#define WARN(x...) { fprintf(stderr, "W: " x); }
+#define LOG(x...) { fprintf(stderr, x); }
+#define INFO(x...) { if (verbose > 0) fprintf(stderr, "INFO: " x); }
+#define DEBUG(x...) { if (verbose > 1) fprintf(stderr, "DEBUG: " x); }
+
 extern void *offset;
 extern uint32_t romsize;
 extern int host_bigendian;
diff --git a/util/cbfstool/compress.c b/util/cbfstool/compress.c
index 2222dab..22f3020 100644
--- a/util/cbfstool/compress.c
+++ b/util/cbfstool/compress.c
@@ -50,7 +50,7 @@ comp_func_ptr compression_function(comp_algo algo)
 		compress = lzma_compress;
 		break;
 	default:
-		fprintf(stderr, "E: Unknown compression algorithm %d!\n", algo);
+		ERROR("Unknown compression algorithm %d!\n", algo);
 		return NULL;
 	}
 	return compress;



More information about the coreboot mailing list