summaryrefslogtreecommitdiff
path: root/firmware/stub
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/stub')
-rw-r--r--firmware/stub/vboot_api_stub.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/firmware/stub/vboot_api_stub.c b/firmware/stub/vboot_api_stub.c
index 732facb9..f3289e2b 100644
--- a/firmware/stub/vboot_api_stub.c
+++ b/firmware/stub/vboot_api_stub.c
@@ -19,11 +19,27 @@
__pragma(warning (disable: 4100))
+/* U-Boot's printf uses '%L' for uint64_t. gcc uses '%l'. */
+#define MAX_FMT 255
+static char fmtbuf[MAX_FMT+1];
+static const char *fixfmt(const char *format) {
+ int i;
+ for(i=0; i<MAX_FMT && format[i]; i++) {
+ fmtbuf[i] = format[i];
+ if(format[i] == '%' && format[i+1] == 'L') {
+ fmtbuf[i+1] = 'l';
+ i++;
+ }
+ }
+ fmtbuf[i] = '\0';
+ return fmtbuf;
+}
+
void VbExError(const char* format, ...) {
va_list ap;
va_start(ap, format);
fprintf(stderr, "ERROR: ");
- vfprintf(stderr, format, ap);
+ vfprintf(stderr, fixfmt(format), ap);
va_end(ap);
exit(1);
}
@@ -31,9 +47,10 @@ void VbExError(const char* format, ...) {
void VbExDebug(const char* format, ...) {
va_list ap;
+ int i;
va_start(ap, format);
fprintf(stderr, "DEBUG: ");
- vfprintf(stderr, format, ap);
+ vfprintf(stderr, fixfmt(format), ap);
va_end(ap);
}