1*4882a593SmuzhiyunFrom df4d2000a22db673a788b8e57e8e7c0cc3cee777 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Leonard Chan <leonardchan@google.com>
3*4882a593SmuzhiyunDate: Thu, 3 Oct 2019 18:53:04 -0700
4*4882a593SmuzhiyunSubject: [PATCH] Make vboot_version extern in header
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunWhen enabling `-fno-common` in Fuchsia, we get a bunch of linker errors
7*4882a593Smuzhiyunwhen linking futility:
8*4882a593Smuzhiyun
9*4882a593Smuzhiyun```
10*4882a593Smuzhiyunld.lld: error: duplicate symbol: vboot_version
11*4882a593Smuzhiyun>>> defined at futility.h:43 (../../third_party/vboot_reference/futility/futility.h:43)
12*4882a593Smuzhiyun>>>            host_x63-asan_no_detect_leaks/obj/third_party/vboot_reference/futility/futility.cmd_bdb.c.o:(vboot_version)
13*4882a593Smuzhiyun>>> defined at futility.h:43 (../../third_party/vboot_reference/futility/futility.h:43)
14*4882a593Smuzhiyun>>>            host_x64-asan_no_detect_leaks/obj/third_party/vboot_reference/futility/futility.cmd_create.c.o:(.bss.vboot_version+0x0)
15*4882a593Smuzhiyun```
16*4882a593Smuzhiyun
17*4882a593Smuzhiyunand think this is because -fno-common places vboot_version for
18*4882a593Smuzhiyununitialized global variables in the BSS section of each object file.
19*4882a593SmuzhiyunMaking it extern instead resolves each reference to its definition in
20*4882a593Smuzhiyunfutility/misc.c.
21*4882a593Smuzhiyun
22*4882a593SmuzhiyunChange-Id: I591f07abd1f975a8a9d078bb4366e2e0861390b4
23*4882a593SmuzhiyunReviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1839207
24*4882a593SmuzhiyunReviewed-by: Julius Werner <jwerner@chromium.org>
25*4882a593SmuzhiyunReviewed-by: Joel Kitching <kitching@chromium.org>
26*4882a593SmuzhiyunCommit-Queue: Julius Werner <jwerner@chromium.org>
27*4882a593SmuzhiyunTested-by: Julius Werner <jwerner@chromium.org>
28*4882a593Smuzhiyun
29*4882a593SmuzhiyunPatch taken from upstream: https://chromium.googlesource.com/chromiumos/platform/vboot_reference/+/df4d2000a22db673a788b8e57e8e7c0cc3cee777
30*4882a593SmuzhiyunSigned-off-by: Heiko Thiery <heiko.thiery@gmail.com>
31*4882a593Smuzhiyun---
32*4882a593Smuzhiyun futility/futility.h | 2 +-
33*4882a593Smuzhiyun 1 file changed, 1 insertion(+), 1 deletion(-)
34*4882a593Smuzhiyun
35*4882a593Smuzhiyundiff --git a/futility/futility.h b/futility/futility.h
36*4882a593Smuzhiyunindex 3bce1106..5dc426dd 100644
37*4882a593Smuzhiyun--- a/futility/futility.h
38*4882a593Smuzhiyun+++ b/futility/futility.h
39*4882a593Smuzhiyun@@ -41,7 +41,7 @@ enum vboot_version  {
40*4882a593Smuzhiyun };
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun /* What's our preferred API & data format? */
43*4882a593Smuzhiyun-enum vboot_version vboot_version;
44*4882a593Smuzhiyun+extern enum vboot_version vboot_version;
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun /* Here's a structure to define the commands that futility implements. */
47*4882a593Smuzhiyun struct futil_cmd_t {
48*4882a593Smuzhiyun--
49*4882a593Smuzhiyun2.20.1
50*4882a593Smuzhiyun
51