diff --git a/util/cbfstool/fmap_from_fmd.c b/util/cbfstool/fmap_from_fmd.c
index fa1024b..2671743 100644
--- a/util/cbfstool/fmap_from_fmd.c
+++ b/util/cbfstool/fmap_from_fmd.c
@@ -28,9 +28,8 @@
 				const struct flashmap_descriptor *section,
 						unsigned absolute_watermark) {
 	if (strlen(section->name) >= FMAP_STRLEN) {
-		fprintf(stderr,
-			"ERROR: Section name ('%s') exceeds %d character FMAP format limit\n",
-					section->name, FMAP_STRLEN - 1);
+		ERROR("Section name ('%s') exceeds %d character FMAP format limit\n",
+						section->name, FMAP_STRLEN - 1);
 		return false;
 	}
 
@@ -38,9 +37,8 @@
 
 	if (fmap_append_area(flashmap, absolute_watermark, section->size,
 					(uint8_t *)section->name, 0) < 0) {
-		fprintf(stderr,
-			"ERROR: Failed to insert section '%s' into FMAP\n",
-							section->name);
+		ERROR("Failed to insert section '%s' into FMAP\n",
+								section->name);
 		return false;
 	}
 
@@ -59,8 +57,7 @@
 	assert(desc->size_known);
 
 	if (strlen(desc->name) >= FMAP_STRLEN) {
-		fprintf(stderr,
-			"ERROR: Image name ('%s') exceeds %d character FMAP header limit\n",
+		ERROR("Image name ('%s') exceeds %d character FMAP header limit\n",
 						desc->name, FMAP_STRLEN - 1);
 		return NULL;
 	}
@@ -68,7 +65,7 @@
 	struct fmap *fmap = fmap_create(desc->offset_known ? desc->offset : 0,
 					desc->size, (uint8_t *)desc->name);
 	if (!fmap) {
-		fputs("ERROR: Failed to allocate FMAP header\n", stderr);
+		ERROR("Failed to allocate FMAP header\n");
 		return fmap;
 	}
 
diff --git a/util/cbfstool/fmd.c b/util/cbfstool/fmd.c
index bfce049..a4430be 100644
--- a/util/cbfstool/fmd.c
+++ b/util/cbfstool/fmd.c
@@ -19,6 +19,7 @@
 
 #include "fmd.h"
 
+#include "common.h"
 #include "fmd_parser.h"
 #include "fmd_scanner.h"
 #include "option.h"
@@ -56,8 +57,7 @@
 
 	ENTRY search_key = {node->name, NULL};
 	if (hsearch(search_key, FIND)) {
-		fprintf(stderr, "ERROR: Multiple sections with name '%s'\n",
-								node->name);
+		ERROR("Multiple sections with name '%s'\n", node->name);
 		return false;
 	}
 	if (!hsearch(search_key, ENTER))
@@ -65,26 +65,22 @@
 
 	if (node->offset_known) {
 		if (start.val_known && node->offset < start.val) {
-			fprintf(stderr, "ERROR: Section '%s' starts too low\n",
-								node->name);
+			ERROR("Section '%s' starts too low\n", node->name);
 			return false;
 		} else if (end.val_known && node->offset > end.val) {
-			fprintf(stderr, "ERROR: Section '%s' starts too high\n",
-								node->name);
+			ERROR("Section '%s' starts too high\n", node->name);
 			return false;
 		}
 	}
 
 	if (node->size_known) {
 		if (node->size == 0) {
-			fprintf(stderr, "ERROR: Section '%s' given no space\n",
-								node->name);
+			ERROR("Section '%s' given no space\n", node->name);
 			return false;
 		} else if (node->offset_known) {
 			unsigned node_end = node->offset + node->size;
 			if (end.val_known && node_end > end.val) {
-				fprintf(stderr, "ERROR: Section '%s' too big\n",
-								node->name);
+				ERROR("Section '%s' too big\n", node->name);
 				return false;
 			}
 		}
@@ -120,16 +116,14 @@
 		assert(cur->offset_known || cur->size_known);
 		if (!cur->offset_known) {
 			if (cur->size > end_watermark) {
-				fprintf(stderr, "ERROR: Section '%s' too big\n",
-								cur->name);
+				ERROR("Section '%s' too big\n", cur->name);
 				return false;
 			}
 			cur->offset_known = true;
 			cur->offset = end_watermark -= cur->size;
 		} else if (!cur->size_known) {
 			if (cur->offset > end_watermark) {
-				fprintf(stderr,
-					"ERROR: Section '%s' starts too high\n",
+				ERROR("Section '%s' starts too high\n",
 								cur->name);
 				return false;
 			}
@@ -230,8 +224,7 @@
 
 		if (!cur_section->size_known) {
 			if (!cur_section->offset_known) {
-				fprintf(stderr,
-					"ERROR: Cannot determine either offset or size of section '%s'\n",
+				ERROR("Cannot determine either offset or size of section '%s'\n",
 							cur_section->name);
 				return false;
 			} else if (!first_incomplete_it) {
@@ -315,7 +308,7 @@
 		// This hash table is used to store the declared name of each
 		// section and ensure that each is globally unique.
 		if (!hcreate(fmd_count_nodes(ret))) {
-			perror("ERROR: While initializing hashtable");
+			perror("E: While initializing hashtable");
 			fmd_cleanup(ret);
 			return NULL;
 		}
diff --git a/util/cbfstool/fmd_parser.c b/util/cbfstool/fmd_parser.c
index d97e743..d463393 100644
--- a/util/cbfstool/fmd_parser.c
+++ b/util/cbfstool/fmd_parser.c
@@ -65,12 +65,13 @@
 #line 20 "fmd_parser.y" /* yacc.c:339  */
 
 #include "fmd_scanner.h"
+#include "common.h"
 
 #include <stdlib.h>
 
 struct flashmap_descriptor *res = NULL;
 
-#line 74 "y.tab.c" /* yacc.c:339  */
+#line 75 "y.tab.c" /* yacc.c:339  */
 
 # ifndef YY_NULLPTR
 #  if defined __cplusplus && 201103L <= __cplusplus
@@ -100,7 +101,7 @@
 extern int yydebug;
 #endif
 /* "%code requires" blocks.  */
-#line 36 "fmd_parser.y" /* yacc.c:355  */
+#line 37 "fmd_parser.y" /* yacc.c:355  */
 
 #include "fmd.h"
 #include "option.h"
@@ -125,7 +126,7 @@
 					struct descriptor_list children);
 void yyerror(const char *s);
 
-#line 129 "y.tab.c" /* yacc.c:355  */
+#line 130 "y.tab.c" /* yacc.c:355  */
 
 /* Token type.  */
 #ifndef YYTOKENTYPE
@@ -147,7 +148,7 @@
 typedef union YYSTYPE YYSTYPE;
 union YYSTYPE
 {
-#line 28 "fmd_parser.y" /* yacc.c:355  */
+#line 29 "fmd_parser.y" /* yacc.c:355  */
 
 	unsigned intval;
 	char *strval;
@@ -155,7 +156,7 @@
 	struct flashmap_descriptor *region_ptr;
 	struct descriptor_list region_listhdr;
 
-#line 159 "y.tab.c" /* yacc.c:355  */
+#line 160 "y.tab.c" /* yacc.c:355  */
 };
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
@@ -170,7 +171,7 @@
 
 /* Copy the second part of user declarations.  */
 
-#line 174 "y.tab.c" /* yacc.c:358  */
+#line 175 "y.tab.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -468,8 +469,8 @@
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint8 yyrline[] =
 {
-       0,    79,    79,    84,   101,   108,   109,   110,   111,   112,
-     113,   114,   115,   116,   118,   122,   123,   124,   135
+       0,    80,    80,    85,   102,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,   119,   123,   124,   125,   136
 };
 #endif
 
@@ -1251,16 +1252,16 @@
   switch (yyn)
     {
         case 2:
-#line 80 "fmd_parser.y" /* yacc.c:1646  */
+#line 81 "fmd_parser.y" /* yacc.c:1646  */
     {
 	if (!(res = parse_descriptor((yyvsp[-3].strval), (yyvsp[-2].maybe_intval), (yyvsp[-1].maybe_intval), (yyvsp[0].region_listhdr))))
 		YYABORT;
 }
-#line 1260 "y.tab.c" /* yacc.c:1646  */
+#line 1261 "y.tab.c" /* yacc.c:1646  */
     break;
 
   case 3:
-#line 86 "fmd_parser.y" /* yacc.c:1646  */
+#line 87 "fmd_parser.y" /* yacc.c:1646  */
     {
 	struct flashmap_descriptor *node = parse_descriptor((yyvsp[-4].strval), (yyvsp[-2].maybe_intval), (yyvsp[-1].maybe_intval), (yyvsp[0].region_listhdr));
 	if (!node)
@@ -1268,7 +1269,7 @@
 
 	char *annotation = (yyvsp[-3].strval);
 	if (annotation && !fmd_process_annotation_impl(node, annotation)) {
-		fprintf(stderr, "ERROR: Section '%s' has unexpected annotation '(%s)'\n",
+		ERROR("Section '%s' has unexpected annotation '(%s)'\n",
 							node->name, annotation);
 		YYABORT;
 	}
@@ -1276,92 +1277,92 @@
 
 	(yyval.region_ptr) = node;
 }
-#line 1280 "y.tab.c" /* yacc.c:1646  */
+#line 1281 "y.tab.c" /* yacc.c:1646  */
     break;
 
   case 4:
-#line 102 "fmd_parser.y" /* yacc.c:1646  */
+#line 103 "fmd_parser.y" /* yacc.c:1646  */
     {
 	if (!(yyvsp[0].strval)) {
-		perror("ERROR: While allocating section name");
+		perror("E: While allocating section name");
 		YYABORT;
 	}
 }
-#line 1291 "y.tab.c" /* yacc.c:1646  */
+#line 1292 "y.tab.c" /* yacc.c:1646  */
     break;
 
   case 5:
-#line 108 "fmd_parser.y" /* yacc.c:1646  */
+#line 109 "fmd_parser.y" /* yacc.c:1646  */
     { (yyval.strval) = NULL; }
-#line 1297 "y.tab.c" /* yacc.c:1646  */
+#line 1298 "y.tab.c" /* yacc.c:1646  */
     break;
 
   case 7:
-#line 110 "fmd_parser.y" /* yacc.c:1646  */
+#line 111 "fmd_parser.y" /* yacc.c:1646  */
     { (yyval.strval) = (yyvsp[-1].strval); }
-#line 1303 "y.tab.c" /* yacc.c:1646  */
+#line 1304 "y.tab.c" /* yacc.c:1646  */
     break;
 
   case 8:
-#line 111 "fmd_parser.y" /* yacc.c:1646  */
+#line 112 "fmd_parser.y" /* yacc.c:1646  */
     { (yyval.maybe_intval) = (struct unsigned_option){false, 0}; }
-#line 1309 "y.tab.c" /* yacc.c:1646  */
+#line 1310 "y.tab.c" /* yacc.c:1646  */
     break;
 
   case 10:
-#line 113 "fmd_parser.y" /* yacc.c:1646  */
+#line 114 "fmd_parser.y" /* yacc.c:1646  */
     { (yyval.maybe_intval) = (struct unsigned_option){true, (yyvsp[0].intval)}; }
-#line 1315 "y.tab.c" /* yacc.c:1646  */
+#line 1316 "y.tab.c" /* yacc.c:1646  */
     break;
 
   case 11:
-#line 114 "fmd_parser.y" /* yacc.c:1646  */
+#line 115 "fmd_parser.y" /* yacc.c:1646  */
     { (yyval.maybe_intval) = (struct unsigned_option){false, 0}; }
-#line 1321 "y.tab.c" /* yacc.c:1646  */
+#line 1322 "y.tab.c" /* yacc.c:1646  */
     break;
 
   case 13:
-#line 116 "fmd_parser.y" /* yacc.c:1646  */
+#line 117 "fmd_parser.y" /* yacc.c:1646  */
     { (yyval.maybe_intval) = (struct unsigned_option){true, (yyvsp[0].intval)}; }
-#line 1327 "y.tab.c" /* yacc.c:1646  */
+#line 1328 "y.tab.c" /* yacc.c:1646  */
     break;
 
   case 14:
-#line 118 "fmd_parser.y" /* yacc.c:1646  */
+#line 119 "fmd_parser.y" /* yacc.c:1646  */
     {
 	(yyval.region_listhdr) = (struct descriptor_list)
 					{.len = 0, .head = NULL, .tail = NULL};
 }
-#line 1336 "y.tab.c" /* yacc.c:1646  */
+#line 1337 "y.tab.c" /* yacc.c:1646  */
     break;
 
   case 16:
-#line 123 "fmd_parser.y" /* yacc.c:1646  */
+#line 124 "fmd_parser.y" /* yacc.c:1646  */
     { (yyval.region_listhdr) = (yyvsp[-1].region_listhdr); }
-#line 1342 "y.tab.c" /* yacc.c:1646  */
+#line 1343 "y.tab.c" /* yacc.c:1646  */
     break;
 
   case 17:
-#line 125 "fmd_parser.y" /* yacc.c:1646  */
+#line 126 "fmd_parser.y" /* yacc.c:1646  */
     {
 	struct descriptor_node *node = malloc(sizeof(*node));
 	if (!node) {
-		perror("ERROR: While allocating linked list node");
+		perror("E: While allocating linked list node");
 		YYABORT;
 	}
 	node->val = (yyvsp[0].region_ptr);
 	node->next = NULL;
 	(yyval.region_listhdr) = (struct descriptor_list){.len = 1, .head = node, .tail = node};
 }
-#line 1357 "y.tab.c" /* yacc.c:1646  */
+#line 1358 "y.tab.c" /* yacc.c:1646  */
     break;
 
   case 18:
-#line 136 "fmd_parser.y" /* yacc.c:1646  */
+#line 137 "fmd_parser.y" /* yacc.c:1646  */
     {
 	struct descriptor_node *node = malloc(sizeof(*node));
 	if (!node) {
-		perror("ERROR: While allocating linked list node");
+		perror("E: While allocating linked list node");
 		YYABORT;
 	}
 	node->val = (yyvsp[0].region_ptr);
@@ -1371,11 +1372,11 @@
 	(yyval.region_listhdr) = (struct descriptor_list)
 			{.len = (yyvsp[-1].region_listhdr).len + 1, .head = (yyvsp[-1].region_listhdr).head, .tail = node};
 }
-#line 1375 "y.tab.c" /* yacc.c:1646  */
+#line 1376 "y.tab.c" /* yacc.c:1646  */
     break;
 
 
-#line 1379 "y.tab.c" /* yacc.c:1646  */
+#line 1380 "y.tab.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -1603,7 +1604,7 @@
 #endif
   return yyresult;
 }
-#line 150 "fmd_parser.y" /* yacc.c:1906  */
+#line 151 "fmd_parser.y" /* yacc.c:1906  */
 
 
 struct flashmap_descriptor *parse_descriptor(char *name,
@@ -1612,7 +1613,7 @@
 {
 	struct flashmap_descriptor *region = malloc(sizeof(*region));
 	if (!region) {
-		perror("ERROR: While allocating descriptor section");
+		perror("E: While allocating descriptor section");
 		return NULL;
 	}
 	region->name = name;
@@ -1624,7 +1625,7 @@
 	if (region->list_len) {
 		region->list = malloc(region->list_len * sizeof(*region->list));
 		if (!region->list) {
-			perror("ERROR: While allocating node children array");
+			perror("E: While allocating node children array");
 			return NULL;
 		}
 		struct descriptor_node *cur_node = children.head;
diff --git a/util/cbfstool/fmd_parser.h b/util/cbfstool/fmd_parser.h
index 393a8ff..dc6301d 100644
--- a/util/cbfstool/fmd_parser.h
+++ b/util/cbfstool/fmd_parser.h
@@ -40,7 +40,7 @@
 extern int yydebug;
 #endif
 /* "%code requires" blocks.  */
-#line 36 "fmd_parser.y" /* yacc.c:1909  */
+#line 37 "fmd_parser.y" /* yacc.c:1909  */
 
 #include "fmd.h"
 #include "option.h"
@@ -87,7 +87,7 @@
 typedef union YYSTYPE YYSTYPE;
 union YYSTYPE
 {
-#line 28 "fmd_parser.y" /* yacc.c:1909  */
+#line 29 "fmd_parser.y" /* yacc.c:1909  */
 
 	unsigned intval;
 	char *strval;
diff --git a/util/cbfstool/fmd_parser.y b/util/cbfstool/fmd_parser.y
index 292fba3..2327ae4 100644
--- a/util/cbfstool/fmd_parser.y
+++ b/util/cbfstool/fmd_parser.y
@@ -19,6 +19,7 @@
 
 %{
 #include "fmd_scanner.h"
+#include "common.h"
 
 #include <stdlib.h>
 
@@ -90,7 +91,7 @@
 
 	char *annotation = $2;
 	if (annotation && !fmd_process_annotation_impl(node, annotation)) {
-		fprintf(stderr, "ERROR: Section '%s' has unexpected annotation '(%s)'\n",
+		ERROR("Section '%s' has unexpected annotation '(%s)'\n",
 							node->name, annotation);
 		YYABORT;
 	}
@@ -101,7 +102,7 @@
 region_name: STRING
 {
 	if (!$1) {
-		perror("ERROR: While allocating section name");
+		perror("E: While allocating section name");
 		YYABORT;
 	}
 };
@@ -125,7 +126,7 @@
 {
 	struct descriptor_node *node = malloc(sizeof(*node));
 	if (!node) {
-		perror("ERROR: While allocating linked list node");
+		perror("E: While allocating linked list node");
 		YYABORT;
 	}
 	node->val = $1;
@@ -136,7 +137,7 @@
 {
 	struct descriptor_node *node = malloc(sizeof(*node));
 	if (!node) {
-		perror("ERROR: While allocating linked list node");
+		perror("E: While allocating linked list node");
 		YYABORT;
 	}
 	node->val = $2;
@@ -155,7 +156,7 @@
 {
 	struct flashmap_descriptor *region = malloc(sizeof(*region));
 	if (!region) {
-		perror("ERROR: While allocating descriptor section");
+		perror("E: While allocating descriptor section");
 		return NULL;
 	}
 	region->name = name;
@@ -167,7 +168,7 @@
 	if (region->list_len) {
 		region->list = malloc(region->list_len * sizeof(*region->list));
 		if (!region->list) {
-			perror("ERROR: While allocating node children array");
+			perror("E: While allocating node children array");
 			return NULL;
 		}
 		struct descriptor_node *cur_node = children.head;
