summaryrefslogtreecommitdiff
path: root/gbl/patches/BUILD
diff options
context:
space:
mode:
authorYecheng Zhao <zyecheng@google.com>2024-04-26 00:05:29 +0000
committerYecheng Zhao <zyecheng@google.com>2024-04-26 02:28:53 +0000
commit3b27c6f519f4ca5a96466129046397d1f79574f8 (patch)
tree36bd2e19863467b8e963904673f32643f1fdb87a /gbl/patches/BUILD
parent57d214e02106f0efe7f97b1f135cb5ae863721b3 (diff)
downloadlibbootloader-3b27c6f519f4ca5a96466129046397d1f79574f8.tar.gz
Fix build error due to chkstk/alloca on x86
The `avb_cert_validate_vbmeta_public_key` API uses more than 8KB of stack memory and triggers the compiler to insert calls to function __chkstk() and __alloca() on x86/x86_64 platforms. Although rust libcompiler_builtins does provide the implementations, there are two issues: 1. LLVM mangles the symbol and add an additional underscore to the symbol name, causing link to fail to find the correct one. 2. The implementation is not enabled for x86 uefi build. x86_64 had the same issue but was fixed. But it wasn't ported to x86. As a workaround, for #1 we define mangled symbols that simply jump to the correct one. For #2 we apply the same fix from x86_64 for x86 at build time to and rebuild std from source, until upstream is fixed. Bug: 337114254 Change-Id: Id7bce71a7d5ca08fc79180733e40fc1ec083da57
Diffstat (limited to 'gbl/patches/BUILD')
-rw-r--r--gbl/patches/BUILD19
1 files changed, 19 insertions, 0 deletions
diff --git a/gbl/patches/BUILD b/gbl/patches/BUILD
new file mode 100644
index 0000000..7509dde
--- /dev/null
+++ b/gbl/patches/BUILD
@@ -0,0 +1,19 @@
+# Copyright (C) 2024 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+package(
+ default_visibility = ["//visibility:public"],
+)
+
+exports_files(glob(["**/*"]))