summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYunlian Jiang <yunlian@google.com>2015-06-09 16:21:56 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-06-11 18:27:24 +0000
commit637ff03502f3511d90e8d79cc1c52b3be01d6cd3 (patch)
tree8398811b813ebc297c9a3774d5bff560b2d64ef1
parentd7f0f93fa878e6dd7435adbe034e1fc7474f94b0 (diff)
downloadvboot-637ff03502f3511d90e8d79cc1c52b3be01d6cd3.tar.gz
vboot_reference: fix unittest when building with clang.
When linking vboot_api_kernel4_tests, there are two VbBootNormal() available, the gcc chooses the one in vboot_api_kernel4_tests.c and the test passes, the clang chooses the one in vboot_api_kernel.c and make the unittest fail. This CL makes the one in vboot_api_kernel.c a weak symbol so that clang can choose the one in vboot_api_kernel4_tests.c BUG=chromium:498469 BRANCH=none TEST=CC=x86_64-cros-linux-gnu-clang FEATURES='test' emerge-amd64-generic vboot_reference Change-Id: Ibcb78ee055fc9485dbc2bcc1d1cf98144a1a3b64 Reviewed-on: https://chromium-review.googlesource.com/276504 Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Queue: Yunlian Jiang <yunlian@chromium.org> Tested-by: Yunlian Jiang <yunlian@chromium.org>
-rw-r--r--firmware/include/vboot_api.h5
-rw-r--r--firmware/lib/vboot_api_kernel.c3
-rw-r--r--firmware/stub/vboot_api_stub_init.c2
3 files changed, 8 insertions, 2 deletions
diff --git a/firmware/include/vboot_api.h b/firmware/include/vboot_api.h
index 53105407..7e94773e 100644
--- a/firmware/include/vboot_api.h
+++ b/firmware/include/vboot_api.h
@@ -37,6 +37,11 @@
typedef uint32_t VbError_t;
/*
+ * Define test_mockable for mocking functions.
+ */
+#define test_mockable __attribute__((weak))
+
+/*
* Predefined error numbers. Success is 0. Errors are non-zero, but differ
* between functions. For example, the TPM functions may pass through TPM
* error codes, some of which may be recoverable.
diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c
index 0fd1fa3e..312014bd 100644
--- a/firmware/lib/vboot_api_kernel.c
+++ b/firmware/lib/vboot_api_kernel.c
@@ -238,7 +238,8 @@ int VbUserConfirms(VbCommonParams *cparams, uint32_t confirm_flags)
return -1;
}
-VbError_t VbBootNormal(VbCommonParams *cparams, LoadKernelParams *p)
+VbError_t test_mockable
+VbBootNormal(VbCommonParams *cparams, LoadKernelParams *p)
{
/* Boot from fixed disk only */
VBDEBUG(("Entering %s()\n", __func__));
diff --git a/firmware/stub/vboot_api_stub_init.c b/firmware/stub/vboot_api_stub_init.c
index 9e4f6370..34387837 100644
--- a/firmware/stub/vboot_api_stub_init.c
+++ b/firmware/stub/vboot_api_stub_init.c
@@ -61,7 +61,7 @@ uint64_t VbExGetTimer(void)
return (uint64_t)tv.tv_sec * 1000000 + (uint64_t)tv.tv_usec;
}
-VbError_t VbExNvStorageRead(uint8_t *buf)
+VbError_t test_mockable VbExNvStorageRead(uint8_t *buf)
{
return VBERROR_SUCCESS;
}