summaryrefslogtreecommitdiff
path: root/common/version.c
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2017-01-12 09:40:10 -0800
committerchrome-bot <chrome-bot@chromium.org>2017-01-30 16:48:40 -0800
commit7cbb815732d7434f5985d3b50a869aa71ba5c507 (patch)
tree5c8714c956b96cbe3c6793d31b338e68afbacc79 /common/version.c
parent927e01da02ab68c304d95508df5ba0b50f8bb960 (diff)
downloadchrome-ec-7cbb815732d7434f5985d3b50a869aa71ba5c507.tar.gz
version: Store image size data in version struct
Store our image size (known at build time) in our version struct (now renamed to image_data). This will allow us to more efficiently determine the size of an image in a follow-up CL. Note that compatibility is broken for old ROs that do not include this CL. BUG=chromium:577915 TEST=Verify on kevin + lars + lars_pd that stored image size matches output of system_get_image_used() for both RO and RW images. BRANCH=None Change-Id: I49ea5fc27a7f11f66daba485a87d0dfe7d0c770f Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/427408 Commit-Ready: Shawn N <shawnn@chromium.org> Tested-by: Shawn N <shawnn@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'common/version.c')
-rw-r--r--common/version.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/common/version.c b/common/version.c
index 3757c9d5b4..ff8207bf2c 100644
--- a/common/version.c
+++ b/common/version.c
@@ -10,11 +10,14 @@
#include "ec_version.h"
#include "version.h"
-const struct version_struct __keep version_data
+const struct image_data __keep current_image_data
__attribute__((section(".rodata.ver"))) = {
- CROS_EC_VERSION_COOKIE1,
- CROS_EC_VERSION32,
- CROS_EC_VERSION_COOKIE2
+ .cookie1 = CROS_EC_IMAGE_DATA_COOKIE1,
+ .version = CROS_EC_VERSION32,
+#ifndef TEST_BUILD
+ .size = (const uintptr_t)&__image_size,
+#endif
+ .cookie2 = CROS_EC_IMAGE_DATA_COOKIE2,
};
const char build_info[] __keep __attribute__((section(".rodata.buildinfo"))) =
@@ -32,7 +35,7 @@ uint32_t ver_get_numcommits(void)
* we want to return the numcommits as an int.
*/
for (i = 0; i < 32; i++) {
- if (version_data.version[i] == '.') {
+ if (current_image_data.version[i] == '.') {
numperiods++;
if (numperiods == 2)
break;
@@ -41,12 +44,11 @@ uint32_t ver_get_numcommits(void)
i++;
for (; i < 32; i++) {
- if (version_data.version[i] == '-')
+ if (current_image_data.version[i] == '-')
break;
ret *= 10;
- ret += version_data.version[i] - '0';
+ ret += current_image_data.version[i] - '0';
}
return (i == 32 ? 0 : ret);
}
-