From 3b27c6f519f4ca5a96466129046397d1f79574f8 Mon Sep 17 00:00:00 2001 From: Yecheng Zhao Date: Fri, 26 Apr 2024 00:05:29 +0000 Subject: 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 --- gbl/patches/BUILD | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 gbl/patches/BUILD (limited to 'gbl/patches/BUILD') 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(["**/*"])) -- cgit v1.2.3