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-03-16 00:11:41 -0700
commit3c4c83b8c3ec35af3a7ba19116e8467e9a09cc80 (patch)
tree3dc05b0e24a6c7840ce93d3069d4c998eaed08c3 /common/version.c
parent2a1cbf87821f311d98dd5d75707877b92b1d6df2 (diff)
downloadchrome-ec-3c4c83b8c3ec35af3a7ba19116e8467e9a09cc80.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: I7b8dc3ac8cf2df3184d0701a0e0ec8032de8d81b Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/450858 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);
}
-