mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 00:39:49 +00:00
5548d11f4c
This reverts commit e961aa565e
.
Reason for revert: does not actually work
Original change's description:
> [vm/build] Workaround for ld 2.19 crash on ARM
>
> When producing ARM builds instruct llvm-objcopy to drop .ARM.exidx/extab
> sections. These sections don't contain any useful information (we don't use
> exceptions or unwind C++ frames and most of the dart binary is in fact not
> covered by them), however they have been seen to break dynamic linker in older
> glibc versions (pre 2.23) because .ARM.exidx ends up being positioned between
> .rel.dyn and .rel.plt sections while older versions of dynamic linker
> expect these two sections to appear one after another in the ELF file.
>
> Closes https://github.com/dart-lang/sdk/issues/41644.
>
> Change-Id: I0ceebb63105591f132f3764180ae041366cbcade
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175723
> Reviewed-by: Alexander Markov <alexmarkov@google.com>
> Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
TBR=vegorov@google.com,kustermann@google.com,rmacnak@google.com,alexmarkov@google.com
Change-Id: Ia797d8bb6e5dbc44bf68965320da1e03ece17052
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175727
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
159 lines
3.6 KiB
Plaintext
159 lines
3.6 KiB
Plaintext
# Copyright 2013 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import("//build/config/sysroot.gni")
|
|
import("//build/toolchain/ccache.gni")
|
|
import("//build/toolchain/gcc_toolchain.gni")
|
|
import("//build/toolchain/goma.gni")
|
|
|
|
declare_args() {
|
|
toolchain_prefix = ""
|
|
# TODO(zra): Add an argument for overriding the host toolchain.
|
|
}
|
|
|
|
if (use_goma) {
|
|
assert(!use_ccache, "Goma and ccache can't be used together.")
|
|
compiler_prefix = "$goma_dir/gomacc "
|
|
} else if (use_ccache) {
|
|
compiler_prefix = "ccache "
|
|
} else {
|
|
compiler_prefix = ""
|
|
}
|
|
|
|
gcc_toolchain("arm") {
|
|
prefix = "arm-linux-gnueabihf-"
|
|
if (toolchain_prefix != "") {
|
|
prefix = toolchain_prefix
|
|
}
|
|
|
|
cc = "${compiler_prefix}${prefix}gcc"
|
|
cxx = "${compiler_prefix}${prefix}g++"
|
|
|
|
ar = "${prefix}ar"
|
|
ld = cxx
|
|
readelf = "${prefix}readelf"
|
|
nm = "${prefix}nm"
|
|
strip = "${prefix}strip"
|
|
|
|
toolchain_cpu = "arm"
|
|
toolchain_os = "linux"
|
|
is_clang = false
|
|
}
|
|
|
|
gcc_toolchain("clang_arm") {
|
|
prefix = rebase_path("//buildtools/linux-x64/clang/bin", root_build_dir)
|
|
cc = "${compiler_prefix}${prefix}/clang"
|
|
cxx = "${compiler_prefix}${prefix}/clang++"
|
|
|
|
readelf = "${prefix}/llvm-readelf"
|
|
nm = "${prefix}/llvm-nm"
|
|
ar = "${prefix}/llvm-ar"
|
|
ld = cxx
|
|
llvm_objcopy = "${prefix}/llvm-objcopy"
|
|
|
|
toolchain_cpu = "arm"
|
|
toolchain_os = "linux"
|
|
is_clang = true
|
|
}
|
|
|
|
gcc_toolchain("arm64") {
|
|
prefix = "aarch64-linux-gnu-"
|
|
if (toolchain_prefix != "") {
|
|
prefix = toolchain_prefix
|
|
}
|
|
|
|
cc = "${compiler_prefix}${prefix}gcc"
|
|
cxx = "${compiler_prefix}${prefix}g++"
|
|
|
|
ar = "${prefix}ar"
|
|
ld = cxx
|
|
readelf = "${prefix}readelf"
|
|
nm = "${prefix}nm"
|
|
strip = "${prefix}strip"
|
|
|
|
toolchain_cpu = "arm64"
|
|
toolchain_os = "linux"
|
|
is_clang = false
|
|
}
|
|
|
|
gcc_toolchain("clang_arm64") {
|
|
prefix = rebase_path("//buildtools/linux-x64/clang/bin", root_build_dir)
|
|
cc = "${compiler_prefix}${prefix}/clang"
|
|
cxx = "${compiler_prefix}${prefix}/clang++"
|
|
|
|
readelf = "readelf"
|
|
nm = "${prefix}/llvm-nm"
|
|
ar = "${prefix}/llvm-ar"
|
|
ld = cxx
|
|
llvm_objcopy = "${prefix}/llvm-objcopy"
|
|
|
|
toolchain_cpu = "arm64"
|
|
toolchain_os = "linux"
|
|
is_clang = true
|
|
}
|
|
|
|
gcc_toolchain("clang_x86") {
|
|
prefix = rebase_path("//buildtools/linux-x64/clang/bin", root_build_dir)
|
|
cc = "${compiler_prefix}${prefix}/clang"
|
|
cxx = "${compiler_prefix}${prefix}/clang++"
|
|
|
|
readelf = "${prefix}/llvm-readelf"
|
|
nm = "${prefix}/llvm-nm"
|
|
ar = "${prefix}/llvm-ar"
|
|
ld = cxx
|
|
llvm_objcopy = "${prefix}/llvm-objcopy"
|
|
|
|
toolchain_cpu = "x86"
|
|
toolchain_os = "linux"
|
|
is_clang = true
|
|
}
|
|
|
|
gcc_toolchain("x86") {
|
|
prefix = ""
|
|
cc = "${compiler_prefix}${prefix}gcc"
|
|
cxx = "${compiler_prefix}${prefix}g++"
|
|
|
|
readelf = "${prefix}readelf"
|
|
nm = "${prefix}nm"
|
|
ar = "${prefix}ar"
|
|
ld = cxx
|
|
strip = "${prefix}strip"
|
|
|
|
toolchain_cpu = "x86"
|
|
toolchain_os = "linux"
|
|
is_clang = false
|
|
}
|
|
|
|
gcc_toolchain("clang_x64") {
|
|
prefix = rebase_path("//buildtools/linux-x64/clang/bin", root_build_dir)
|
|
cc = "${compiler_prefix}${prefix}/clang"
|
|
cxx = "${compiler_prefix}${prefix}/clang++"
|
|
|
|
readelf = "${prefix}/llvm-readelf"
|
|
nm = "${prefix}/llvm-nm"
|
|
ar = "${prefix}/llvm-ar"
|
|
ld = cxx
|
|
llvm_objcopy = "${prefix}/llvm-objcopy"
|
|
|
|
toolchain_cpu = "x64"
|
|
toolchain_os = "linux"
|
|
is_clang = true
|
|
}
|
|
|
|
gcc_toolchain("x64") {
|
|
prefix = ""
|
|
cc = "${compiler_prefix}${prefix}gcc"
|
|
cxx = "${compiler_prefix}${prefix}g++"
|
|
|
|
readelf = "${prefix}readelf"
|
|
nm = "${prefix}nm"
|
|
ar = "${prefix}ar"
|
|
ld = cxx
|
|
strip = "${prefix}strip"
|
|
|
|
toolchain_cpu = "x64"
|
|
toolchain_os = "linux"
|
|
is_clang = false
|
|
}
|