llvm-8 and rust with back ports for llvm-8
This commit is contained in:
parent
684f2f29ff
commit
59625ccecd
|
@ -1,12 +1,11 @@
|
|||
TERMUX_PKG_HOMEPAGE=https://clang.llvm.org/
|
||||
TERMUX_PKG_DESCRIPTION="Modular compiler and toolchain technologies library"
|
||||
TERMUX_PKG_LICENSE="NCSA"
|
||||
TERMUX_PKG_VERSION=7.0.1
|
||||
TERMUX_PKG_REVISION=1
|
||||
TERMUX_PKG_SHA256=(a38dfc4db47102ec79dcc2aa61e93722c5f6f06f0a961073bd84b78fb949419b
|
||||
a45b62dde5d7d5fdcdfa876b0af92f164d434b06e9e89b5d0b1cbc65dfe3f418
|
||||
8869aab2dd2d8e00d69943352d3166d159d7eae2615f66a684f4a0999fc74031
|
||||
bf16b78a678da67d68405214ec7ee59d86a15f599855806192a75dcfca9b0d0c)
|
||||
TERMUX_PKG_VERSION=8.0.0
|
||||
TERMUX_PKG_SHA256=(8872be1b12c61450cacc82b3d153eab02be2546ef34fa3580ed14137bb26224c
|
||||
084c115aab0084e63b23eee8c233abb6739c399e29966eaeccfc6e088e0b736b
|
||||
9caec8ec922e32ffa130f0fb08e4c5a242d7e68ce757631e425e9eba2e1a6e37
|
||||
f7b1705d2f16c4fc23d6531f67d2dd6fb78a077dd346b02fed64f4b8df65c9d5)
|
||||
TERMUX_PKG_SRCURL=(https://releases.llvm.org/${TERMUX_PKG_VERSION}/llvm-${TERMUX_PKG_VERSION}.src.tar.xz
|
||||
https://releases.llvm.org/${TERMUX_PKG_VERSION}/cfe-${TERMUX_PKG_VERSION}.src.tar.xz
|
||||
https://llvm.org/releases/${TERMUX_PKG_VERSION}/lld-${TERMUX_PKG_VERSION}.src.tar.xz
|
||||
|
@ -45,7 +44,8 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
|
|||
-DLLVM_BINUTILS_INCDIR=$TERMUX_PREFIX/include
|
||||
-DLLVM_ENABLE_SPHINX=ON
|
||||
-DSPHINX_OUTPUT_MAN=ON
|
||||
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly
|
||||
-DLLVM_TARGETS_TO_BUILD=all
|
||||
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=RISCV
|
||||
-DPERL_EXECUTABLE=$(which perl)
|
||||
-DLLVM_ENABLE_FFI=ON
|
||||
"
|
||||
|
|
|
@ -45,53 +45,56 @@ version=@TERMUX_PKG_VERSION@
|
|||
prefix=@TERMUX_PREFIX@
|
||||
has_rtti=NO
|
||||
CPPFLAGS="-I${prefix}/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS"
|
||||
CFLAGS="${CPPFLAGS} ${CFLAGS} -fPIC -Werror=date-time -Wall -W -Wno-unused-parameter -Wwrite-strings -Wmissing-field-initializers -pedantic \
|
||||
-Wno-long-long -Wcovered-switch-default -Wdelete-non-virtual-dtor -Wstring-conversion \
|
||||
-ffunction-sections -fdata-sections -Os -DNDEBUG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS \
|
||||
-D__STDC_LIMIT_MACROS"
|
||||
CFLAGS="${CPPFLAGS} ${CFLAGS} -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS"
|
||||
CXXFLAGS="${CFLAGS} -fvisibility-inlines-hidden -Wcast-qual -Wnon-virtual-dtor -std=c++11 -fno-exceptions"
|
||||
if [ "$has_rtti" != "YES" ]; then CXXFLAGS="$CXXFLAGS -fno-rtti"; fi
|
||||
LDFLAGS="-L${prefix}/lib"
|
||||
LIBFILE="${prefix}/lib/libLLVM-$version.so"
|
||||
|
||||
components="aarch64 aarch64asmparser aarch64asmprinter aarch64codegen aarch64desc \
|
||||
aarch64disassembler aarch64info aarch64utils all all-targets amdgpu amdgpuasmparser amdgpuasmprinter \
|
||||
amdgpucodegen amdgpudesc amdgpudisassembler amdgpuinfo amdgpuutils analysis arm armasmparser armasmprinter \
|
||||
armcodegen armdesc armdisassembler arminfo armutils asmparser asmprinter binaryformat bitreader bitwriter \
|
||||
bpf bpfasmparser bpfasmprinter bpfcodegen bpfdesc bpfdisassembler bpfinfo codegen core coroutines coverage \
|
||||
debuginfocodeview debuginfodwarf debuginfomsf debuginfopdb demangle dlltooldriver engine executionengine \
|
||||
fuzzmutate globalisel hexagon hexagonasmparser hexagoncodegen hexagondesc hexagondisassembler hexagoninfo \
|
||||
instcombine instrumentation interpreter ipo irreader lanai lanaiasmparser lanaiasmprinter lanaicodegen \
|
||||
lanaidesc lanaidisassembler lanaiinfo libdriver lineeditor linker lto mc mcdisassembler mcjit mcparser \
|
||||
mips mipsasmparser mipsasmprinter mipscodegen mipsdesc mipsdisassembler mipsinfo mirparser msp430 \
|
||||
msp430asmprinter msp430codegen msp430desc msp430info native nativecodegen nvptx nvptxasmprinter \
|
||||
nvptxcodegen nvptxdesc nvptxinfo objcarcopts object objectyaml option orcjit passes powerpc powerpcasmparser \
|
||||
powerpcasmprinter powerpccodegen powerpcdesc powerpcdisassembler powerpcinfo profiledata runtimedyld scalaropts \
|
||||
selectiondag sparc sparcasmparser sparcasmprinter sparccodegen sparcdesc sparcdisassembler sparcinfo support symbolize \
|
||||
systemz systemzasmparser systemzasmprinter systemzcodegen systemzdesc systemzdisassembler systemzinfo tablegen target \
|
||||
transformutils vectorize webassembly webassemblyasmprinter webassemblycodegen webassemblydesc webassemblydisassembler \
|
||||
webassemblyinfo windowsmanifest x86 x86asmparser x86asmprinter x86codegen x86desc x86disassembler x86info x86utils xcore \
|
||||
xcoreasmprinter xcorecodegen xcoredesc xcoredisassembler xcoreinfo"
|
||||
static_libs="-lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMMIRParser -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF \
|
||||
-lLLVMCoverage -lLLVMTableGen -lLLVMDlltoolDriver -lLLVMOrcJIT -lLLVMWebAssemblyDisassembler -lLLVMWebAssemblyCodeGen \
|
||||
-lLLVMWebAssemblyDesc -lLLVMWebAssemblyInfo -lLLVMWebAssemblyAsmPrinter -lLLVMXCoreDisassembler -lLLVMXCoreCodeGen \
|
||||
-lLLVMXCoreDesc -lLLVMXCoreInfo -lLLVMXCoreAsmPrinter -lLLVMSystemZDisassembler -lLLVMSystemZCodeGen -lLLVMSystemZAsmParser \
|
||||
-lLLVMSystemZDesc -lLLVMSystemZInfo -lLLVMSystemZAsmPrinter -lLLVMSparcDisassembler -lLLVMSparcCodeGen -lLLVMSparcAsmParser \
|
||||
-lLLVMSparcDesc -lLLVMSparcInfo -lLLVMSparcAsmPrinter -lLLVMPowerPCDisassembler -lLLVMPowerPCCodeGen -lLLVMPowerPCAsmParser \
|
||||
-lLLVMPowerPCDesc -lLLVMPowerPCInfo -lLLVMPowerPCAsmPrinter -lLLVMNVPTXCodeGen -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMNVPTXAsmPrinter \
|
||||
-lLLVMMSP430CodeGen -lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMSP430AsmPrinter -lLLVMMipsDisassembler -lLLVMMipsCodeGen -lLLVMMipsAsmParser \
|
||||
-lLLVMMipsDesc -lLLVMMipsInfo -lLLVMMipsAsmPrinter -lLLVMLanaiDisassembler -lLLVMLanaiCodeGen -lLLVMLanaiAsmParser -lLLVMLanaiDesc \
|
||||
-lLLVMLanaiAsmPrinter -lLLVMLanaiInfo -lLLVMHexagonDisassembler -lLLVMHexagonCodeGen -lLLVMHexagonAsmParser -lLLVMHexagonDesc -lLLVMHexagonInfo \
|
||||
-lLLVMBPFDisassembler -lLLVMBPFCodeGen -lLLVMBPFAsmParser -lLLVMBPFDesc -lLLVMBPFInfo -lLLVMBPFAsmPrinter -lLLVMARMDisassembler \
|
||||
-lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMAsmPrinter -lLLVMARMUtils -lLLVMAMDGPUDisassembler \
|
||||
-lLLVMAMDGPUCodeGen -lLLVMAMDGPUAsmParser -lLLVMAMDGPUDesc -lLLVMAMDGPUInfo -lLLVMAMDGPUAsmPrinter -lLLVMAMDGPUUtils \
|
||||
-lLLVMAArch64Disassembler -lLLVMAArch64CodeGen -lLLVMAArch64AsmParser -lLLVMAArch64Desc -lLLVMAArch64Info -lLLVMAArch64AsmPrinter \
|
||||
-lLLVMAArch64Utils -lLLVMObjectYAML -lLLVMLibDriver -lLLVMOption -lLLVMWindowsManifest -lLLVMFuzzMutate -lLLVMX86Disassembler \
|
||||
-lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF \
|
||||
-lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT -lLLVMLineEditor -lLLVMInterpreter \
|
||||
-lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize \
|
||||
-lLLVMScalarOpts -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis \
|
||||
-lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle"
|
||||
aarch64disassembler aarch64info aarch64utils aggressiveinstcombine all all-targets amdgpu \
|
||||
amdgpuasmparser amdgpuasmprinter amdgpucodegen amdgpudesc amdgpudisassembler amdgpuinfo amdgpuutils \
|
||||
analysis arm armasmparser armasmprinter armcodegen armdesc armdisassembler arminfo armutils asmparser \
|
||||
asmprinter binaryformat bitreader bitwriter bpf bpfasmparser bpfasmprinter bpfcodegen bpfdesc \
|
||||
bpfdisassembler bpfinfo codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfomsf \
|
||||
debuginfopdb demangle dlltooldriver engine executionengine fuzzmutate globalisel hexagon hexagonasmparser \
|
||||
hexagoncodegen hexagondesc hexagondisassembler hexagoninfo instcombine instrumentation interpreter ipo \
|
||||
irreader lanai lanaiasmparser lanaiasmprinter lanaicodegen lanaidesc lanaidisassembler lanaiinfo libdriver \
|
||||
lineeditor linker lto mc mca mcdisassembler mcjit mcparser mips mipsasmparser mipsasmprinter mipscodegen \
|
||||
mipsdesc mipsdisassembler mipsinfo mirparser msp430 msp430asmparser msp430asmprinter msp430codegen \
|
||||
msp430desc msp430disassembler msp430info native nativecodegen nvptx nvptxasmprinter nvptxcodegen \
|
||||
nvptxdesc nvptxinfo objcarcopts object objectyaml option optremarks orcjit passes powerpc \
|
||||
powerpcasmparser powerpcasmprinter powerpccodegen powerpcdesc powerpcdisassembler powerpcinfo \
|
||||
profiledata riscv riscvasmparser riscvasmprinter riscvcodegen riscvdesc riscvdisassembler riscvinfo \
|
||||
riscvutils runtimedyld scalaropts selectiondag sparc sparcasmparser sparcasmprinter sparccodegen sparcdesc \
|
||||
sparcdisassembler sparcinfo support symbolize systemz systemzasmparser systemzasmprinter systemzcodegen \
|
||||
systemzdesc systemzdisassembler systemzinfo tablegen target textapi transformutils vectorize webassembly \
|
||||
webassemblyasmparser webassemblyasmprinter webassemblycodegen webassemblydesc webassemblydisassembler \
|
||||
webassemblyinfo windowsmanifest x86 x86asmparser x86asmprinter x86codegen x86desc x86disassembler x86info \
|
||||
x86utils xcore xcoreasmprinter xcorecodegen xcoredesc xcoredisassembler xcoreinfo xray"
|
||||
static_libs="-lLLVMObjectYAML -lLLVMDlltoolDriver -lLLVMLineEditor -lLLVMFuzzMutate -lLLVMCoroutines \
|
||||
-lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMTextAPI -lLLVMCoverage -lLLVMXRay -lLLVMInterpreter \
|
||||
-lLLVMMIRParser -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF -lLLVMRISCVDisassembler \
|
||||
-lLLVMRISCVCodeGen -lLLVMRISCVAsmParser -lLLVMRISCVDesc -lLLVMRISCVInfo -lLLVMRISCVAsmPrinter \
|
||||
-lLLVMRISCVUtils -lLLVMXCoreDisassembler -lLLVMXCoreCodeGen -lLLVMXCoreDesc -lLLVMXCoreInfo -lLLVMXCoreAsmPrinter \
|
||||
-lLLVMX86Disassembler -lLLVMX86CodeGen -lLLVMX86AsmParser -lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils \
|
||||
-lLLVMWebAssemblyDisassembler -lLLVMWebAssemblyCodeGen -lLLVMWebAssemblyDesc -lLLVMWebAssemblyAsmPrinter -lLLVMWebAssemblyAsmParser \
|
||||
-lLLVMWebAssemblyInfo -lLLVMSystemZDisassembler -lLLVMSystemZCodeGen -lLLVMSystemZAsmParser -lLLVMSystemZDesc -lLLVMSystemZInfo \
|
||||
-lLLVMSystemZAsmPrinter -lLLVMSparcDisassembler -lLLVMSparcCodeGen -lLLVMSparcAsmParser -lLLVMSparcDesc -lLLVMSparcInfo \
|
||||
-lLLVMSparcAsmPrinter -lLLVMPowerPCDisassembler -lLLVMPowerPCCodeGen -lLLVMPowerPCAsmParser -lLLVMPowerPCDesc -lLLVMPowerPCInfo \
|
||||
-lLLVMPowerPCAsmPrinter -lLLVMNVPTXCodeGen -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMNVPTXAsmPrinter -lLLVMMSP430Disassembler \
|
||||
-lLLVMMSP430CodeGen -lLLVMMSP430AsmParser -lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMSP430AsmPrinter -lLLVMMipsDisassembler \
|
||||
-lLLVMMipsCodeGen -lLLVMMipsAsmParser -lLLVMMipsDesc -lLLVMMipsInfo -lLLVMMipsAsmPrinter -lLLVMLanaiDisassembler -lLLVMLanaiCodeGen \
|
||||
-lLLVMLanaiAsmParser -lLLVMLanaiDesc -lLLVMLanaiAsmPrinter -lLLVMLanaiInfo -lLLVMHexagonDisassembler -lLLVMHexagonCodeGen \
|
||||
-lLLVMHexagonAsmParser -lLLVMHexagonDesc -lLLVMHexagonInfo -lLLVMBPFDisassembler -lLLVMBPFCodeGen -lLLVMBPFAsmParser -lLLVMBPFDesc \
|
||||
-lLLVMBPFInfo -lLLVMBPFAsmPrinter -lLLVMARMDisassembler -lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo \
|
||||
-lLLVMARMAsmPrinter -lLLVMARMUtils -lLLVMAMDGPUDisassembler -lLLVMAMDGPUCodeGen -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize \
|
||||
-lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMAMDGPUAsmParser -lLLVMAMDGPUDesc -lLLVMAMDGPUInfo -lLLVMAMDGPUAsmPrinter \
|
||||
-lLLVMAMDGPUUtils -lLLVMLibDriver -lLLVMOption -lLLVMWindowsManifest -lLLVMAArch64Disassembler -lLLVMMCDisassembler -lLLVMAArch64AsmParser \
|
||||
-lLLVMMCJIT -lLLVMTableGen -lLLVMOrcJIT -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOptRemarks -lLLVMMCA -lLLVMAArch64CodeGen -lLLVMGlobalISel \
|
||||
-lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine \
|
||||
-lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMAArch64Desc \
|
||||
-lLLVMAArch64Info -lLLVMAArch64AsmPrinter -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMAArch64Utils \
|
||||
-lLLVMSupport -lLLVMDemangle"
|
||||
shared_libs="-lLLVM-$version"
|
||||
libs=$shared_libs
|
||||
handle_args () {
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
--- ../../cache/llvm-project-20170507-release_600/llvm/tools/llvm-shlib/CMakeLists.txt 2018-03-02 09:50:00.000000000 +0000
|
||||
+++ ./tools/llvm-shlib/CMakeLists.txt 2018-03-08 01:56:32.764107349 +0000
|
||||
@@ -37,7 +37,7 @@
|
||||
add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${SOURCES})
|
||||
|
||||
list(REMOVE_DUPLICATES LIB_NAMES)
|
||||
-if(("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") OR (MINGW) OR (HAIKU)
|
||||
+if(("${CMAKE_SYSTEM_NAME}" MATCHES "^(Linux|Android)$") OR (MINGW) OR (HAIKU)
|
||||
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
|
||||
--- ./tools/llvm-shlib/CMakeLists.txt.orig 2019-03-20 21:24:00.144316380 +0000
|
||||
+++ ./tools/llvm-shlib/CMakeLists.txt 2019-03-20 21:25:26.117941452 +0000
|
||||
@@ -48,6 +48,7 @@
|
||||
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
|
||||
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia")
|
||||
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "DragonFly")
|
||||
+ OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "Android")
|
||||
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")) # FIXME: It should be "GNU ld for elf"
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/simple_version_script.map.in
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
TERMUX_PKG_HOMEPAGE=https://lldb.llvm.org
|
||||
TERMUX_PKG_DESCRIPTION="LLVM based debugger"
|
||||
TERMUX_PKG_LICENSE="NCSA"
|
||||
TERMUX_PKG_VERSION=7.0.1
|
||||
TERMUX_PKG_REVISION=1
|
||||
TERMUX_PKG_SHA256=76b46be75b412a3d22f0d26279306ae7e274fe4d7988a2184c529c38a6a76982
|
||||
TERMUX_PKG_VERSION=8.0.0
|
||||
TERMUX_PKG_SHA256=49918b9f09816554a20ac44c5f85a32dc0a7a00759b3259e78064d674eac0373
|
||||
TERMUX_PKG_SRCURL=https://releases.llvm.org/${TERMUX_PKG_VERSION}/lldb-$TERMUX_PKG_VERSION.src.tar.xz
|
||||
TERMUX_PKG_DEPENDS="libedit, libllvm, libxml2, ncurses-ui-libs"
|
||||
TERMUX_PKG_BLACKLISTED_ARCHES="i686"
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
From 55030c7543d8e877ec7a6b577a51422c38f01259 Mon Sep 17 00:00:00 2001
|
||||
From: Josh Stone <jistone@redhat.com>
|
||||
Date: Fri, 1 Mar 2019 09:27:45 -0800
|
||||
Subject: [PATCH] Backport deprecation fixes from commit b7f030e
|
||||
|
||||
---
|
||||
src/tools/linkchecker/main.rs | 6 +++---
|
||||
src/tools/tidy/src/features.rs | 2 +-
|
||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/tools/linkchecker/main.rs b/src/tools/linkchecker/main.rs
|
||||
index 59662be349dc..2cf0fcfd34cd 100644
|
||||
--- a/src/tools/linkchecker/main.rs
|
||||
+++ b/src/tools/linkchecker/main.rs
|
||||
@@ -78,7 +78,7 @@ impl FileEntry {
|
||||
fn parse_ids(&mut self, file: &Path, contents: &str, errors: &mut bool) {
|
||||
if self.ids.is_empty() {
|
||||
with_attrs_in_source(contents, " id", |fragment, i, _| {
|
||||
- let frag = fragment.trim_left_matches("#").to_owned();
|
||||
+ let frag = fragment.trim_start_matches("#").to_owned();
|
||||
let encoded = small_url_encode(&frag);
|
||||
if !self.ids.insert(frag) {
|
||||
*errors = true;
|
||||
@@ -343,7 +343,7 @@ fn with_attrs_in_source<F: FnMut(&str, usize, &str)>(contents: &str, attr: &str,
|
||||
Some(i) => i,
|
||||
None => continue,
|
||||
};
|
||||
- if rest[..pos_equals].trim_left_matches(" ") != "" {
|
||||
+ if rest[..pos_equals].trim_start_matches(" ") != "" {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -355,7 +355,7 @@ fn with_attrs_in_source<F: FnMut(&str, usize, &str)>(contents: &str, attr: &str,
|
||||
};
|
||||
let quote_delim = rest.as_bytes()[pos_quote] as char;
|
||||
|
||||
- if rest[..pos_quote].trim_left_matches(" ") != "" {
|
||||
+ if rest[..pos_quote].trim_start_matches(" ") != "" {
|
||||
continue;
|
||||
}
|
||||
let rest = &rest[pos_quote + 1..];
|
||||
diff --git a/src/tools/tidy/src/features.rs b/src/tools/tidy/src/features.rs
|
||||
index 2435a0cfd4e3..bf2cfbf32fc7 100644
|
||||
--- a/src/tools/tidy/src/features.rs
|
||||
+++ b/src/tools/tidy/src/features.rs
|
||||
@@ -188,7 +188,7 @@ pub fn collect_lang_features(base_src_path: &Path, bad: &mut bool) -> Features {
|
||||
}
|
||||
|
||||
let mut parts = line.split(',');
|
||||
- let level = match parts.next().map(|l| l.trim().trim_left_matches('(')) {
|
||||
+ let level = match parts.next().map(|l| l.trim().trim_start_matches('(')) {
|
||||
Some("active") => Status::Unstable,
|
||||
Some("removed") => Status::Removed,
|
||||
Some("accepted") => Status::Stable,
|
||||
--
|
||||
2.20.1
|
||||
|
|
@ -2,8 +2,8 @@ TERMUX_PKG_HOMEPAGE=https://www.rust-lang.org/
|
|||
TERMUX_PKG_DESCRIPTION="Systems programming language focused on safety, speed and concurrency"
|
||||
TERMUX_PKG_LICENSE="MIT"
|
||||
TERMUX_PKG_MAINTAINER="Kevin Cotugno @kcotugno"
|
||||
TERMUX_PKG_VERSION=1.32.0
|
||||
TERMUX_PKG_SHA256=d617a7dc39daaafa8256320991005fc376c8ef2080593918301b24466d0067af
|
||||
TERMUX_PKG_VERSION=1.33.0
|
||||
TERMUX_PKG_SHA256=f4b1a72f1a29b23dcc9d7be5f60878f0434560513273906aa93dcd5c0de39b71
|
||||
TERMUX_PKG_SRCURL=https://static.rust-lang.org/dist/rustc-$TERMUX_PKG_VERSION-src.tar.xz
|
||||
TERMUX_PKG_DEPENDS="clang, openssl, lld"
|
||||
|
||||
|
@ -32,13 +32,16 @@ termux_step_configure() {
|
|||
export ${env_host}_OPENSSL_DIR=$TERMUX_PREFIX
|
||||
export X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR=/usr/lib/x86_64-linux-gnu
|
||||
export X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR=/usr/include
|
||||
export PKG_CONFIG_ALLOW_CROSS=1
|
||||
# for backtrace-sys
|
||||
export CC_x86_64_unknown_linux_gnu=gcc
|
||||
export CFLAGS_x86_64_unknown_linux_gnu="-O2"
|
||||
unset CC CXX CPP LD CFLAGS CXXFLAGS CPPFLAGS LDFLAGS PKG_CONFIG
|
||||
unset CC CXX CPP LD CFLAGS CXXFLAGS CPPFLAGS LDFLAGS PKG_CONFIG AR
|
||||
}
|
||||
|
||||
termux_step_make() {
|
||||
# bug workaround with unstable-book-gen
|
||||
$TERMUX_PKG_SRCDIR/x.py --host $CARGO_TARGET_NAME build cargo
|
||||
$TERMUX_PKG_SRCDIR/x.py dist \
|
||||
--host $CARGO_TARGET_NAME \
|
||||
--target $CARGO_TARGET_NAME \
|
||||
|
|
|
@ -30,6 +30,10 @@ channel = "stable"
|
|||
|
||||
rpath = false
|
||||
|
||||
[target.x86_64-unknown-linux-gnu]
|
||||
llvm-config = "/usr/bin/llvm-config-7"
|
||||
|
||||
|
||||
[target.@triple@]
|
||||
android-ndk = "@TERMUX_STANDALONE_TOOLCHAIN@"
|
||||
llvm-config = "@TERMUX_PREFIX@/bin/llvm-config"
|
||||
|
|
|
@ -0,0 +1,399 @@
|
|||
--- a/src/rustllvm/PassWrapper.cpp
|
||||
+++ b/src/rustllvm/PassWrapper.cpp
|
||||
@@ -789,7 +789,7 @@ struct LLVMRustThinLTOData {
|
||||
StringMap<GVSummaryMapTy> ModuleToDefinedGVSummaries;
|
||||
|
||||
#if LLVM_VERSION_GE(7, 0)
|
||||
- LLVMRustThinLTOData() : Index(/* isPerformingAnalysis = */ false) {}
|
||||
+ LLVMRustThinLTOData() : Index(/* HaveGVs = */ false) {}
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -865,7 +865,12 @@ LLVMRustCreateThinLTOData(LLVMRustThinLTOModule *modules,
|
||||
auto deadIsPrevailing = [&](GlobalValue::GUID G) {
|
||||
return PrevailingType::Unknown;
|
||||
};
|
||||
+#if LLVM_VERSION_GE(8, 0)
|
||||
+ computeDeadSymbolsWithConstProp(Ret->Index, Ret->GUIDPreservedSymbols,
|
||||
+ deadIsPrevailing, /* ImportEnabled = */ true);
|
||||
+#else
|
||||
computeDeadSymbols(Ret->Index, Ret->GUIDPreservedSymbols, deadIsPrevailing);
|
||||
+#endif
|
||||
#else
|
||||
computeDeadSymbols(Ret->Index, Ret->GUIDPreservedSymbols);
|
||||
#endif
|
||||
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp
|
||||
index 9d3e6f93b0c1..7905e9f0f237 100644
|
||||
--- a/src/rustllvm/RustWrapper.cpp
|
||||
+++ b/src/rustllvm/RustWrapper.cpp
|
||||
@@ -294,7 +294,7 @@ extern "C" void LLVMRustSetHasUnsafeAlgebra(LLVMValueRef V) {
|
||||
extern "C" LLVMValueRef
|
||||
LLVMRustBuildAtomicLoad(LLVMBuilderRef B, LLVMValueRef Source, const char *Name,
|
||||
LLVMAtomicOrdering Order) {
|
||||
- LoadInst *LI = new LoadInst(unwrap(Source), 0);
|
||||
+ LoadInst *LI = new LoadInst(unwrap(Source));
|
||||
LI->setAtomic(fromRust(Order));
|
||||
return wrap(unwrap(B)->Insert(LI, Name));
|
||||
}
|
||||
@@ -511,6 +511,71 @@ static DINode::DIFlags fromRust(LLVMRustDIFlags Flags) {
|
||||
return Result;
|
||||
}
|
||||
|
||||
+// These values **must** match debuginfo::DISPFlags! They also *happen*
|
||||
+// to match LLVM, but that isn't required as we do giant sets of
|
||||
+// matching below. The value shouldn't be directly passed to LLVM.
|
||||
+enum class LLVMRustDISPFlags : uint32_t {
|
||||
+ SPFlagZero = 0,
|
||||
+ SPFlagVirtual = 1,
|
||||
+ SPFlagPureVirtual = 2,
|
||||
+ SPFlagLocalToUnit = (1 << 2),
|
||||
+ SPFlagDefinition = (1 << 3),
|
||||
+ SPFlagOptimized = (1 << 4),
|
||||
+ // Do not add values that are not supported by the minimum LLVM
|
||||
+ // version we support! see llvm/include/llvm/IR/DebugInfoFlags.def
|
||||
+ // (In LLVM < 8, createFunction supported these as separate bool arguments.)
|
||||
+};
|
||||
+
|
||||
+inline LLVMRustDISPFlags operator&(LLVMRustDISPFlags A, LLVMRustDISPFlags B) {
|
||||
+ return static_cast<LLVMRustDISPFlags>(static_cast<uint32_t>(A) &
|
||||
+ static_cast<uint32_t>(B));
|
||||
+}
|
||||
+
|
||||
+inline LLVMRustDISPFlags operator|(LLVMRustDISPFlags A, LLVMRustDISPFlags B) {
|
||||
+ return static_cast<LLVMRustDISPFlags>(static_cast<uint32_t>(A) |
|
||||
+ static_cast<uint32_t>(B));
|
||||
+}
|
||||
+
|
||||
+inline LLVMRustDISPFlags &operator|=(LLVMRustDISPFlags &A, LLVMRustDISPFlags B) {
|
||||
+ return A = A | B;
|
||||
+}
|
||||
+
|
||||
+inline bool isSet(LLVMRustDISPFlags F) { return F != LLVMRustDISPFlags::SPFlagZero; }
|
||||
+
|
||||
+inline LLVMRustDISPFlags virtuality(LLVMRustDISPFlags F) {
|
||||
+ return static_cast<LLVMRustDISPFlags>(static_cast<uint32_t>(F) & 0x3);
|
||||
+}
|
||||
+
|
||||
+#if LLVM_VERSION_GE(8, 0)
|
||||
+static DISubprogram::DISPFlags fromRust(LLVMRustDISPFlags SPFlags) {
|
||||
+ DISubprogram::DISPFlags Result = DISubprogram::DISPFlags::SPFlagZero;
|
||||
+
|
||||
+ switch (virtuality(SPFlags)) {
|
||||
+ case LLVMRustDISPFlags::SPFlagVirtual:
|
||||
+ Result |= DISubprogram::DISPFlags::SPFlagVirtual;
|
||||
+ break;
|
||||
+ case LLVMRustDISPFlags::SPFlagPureVirtual:
|
||||
+ Result |= DISubprogram::DISPFlags::SPFlagPureVirtual;
|
||||
+ break;
|
||||
+ default:
|
||||
+ // The rest are handled below
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (isSet(SPFlags & LLVMRustDISPFlags::SPFlagLocalToUnit)) {
|
||||
+ Result |= DISubprogram::DISPFlags::SPFlagLocalToUnit;
|
||||
+ }
|
||||
+ if (isSet(SPFlags & LLVMRustDISPFlags::SPFlagDefinition)) {
|
||||
+ Result |= DISubprogram::DISPFlags::SPFlagDefinition;
|
||||
+ }
|
||||
+ if (isSet(SPFlags & LLVMRustDISPFlags::SPFlagOptimized)) {
|
||||
+ Result |= DISubprogram::DISPFlags::SPFlagOptimized;
|
||||
+ }
|
||||
+
|
||||
+ return Result;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
extern "C" uint32_t LLVMRustDebugMetadataVersion() {
|
||||
return DEBUG_METADATA_VERSION;
|
||||
}
|
||||
@@ -575,16 +640,26 @@ LLVMRustDIBuilderCreateSubroutineType(LLVMRustDIBuilderRef Builder,
|
||||
extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateFunction(
|
||||
LLVMRustDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
|
||||
const char *LinkageName, LLVMMetadataRef File, unsigned LineNo,
|
||||
- LLVMMetadataRef Ty, bool IsLocalToUnit, bool IsDefinition,
|
||||
- unsigned ScopeLine, LLVMRustDIFlags Flags, bool IsOptimized,
|
||||
- LLVMValueRef Fn, LLVMMetadataRef TParam, LLVMMetadataRef Decl) {
|
||||
+ LLVMMetadataRef Ty, unsigned ScopeLine, LLVMRustDIFlags Flags,
|
||||
+ LLVMRustDISPFlags SPFlags, LLVMValueRef Fn, LLVMMetadataRef TParam,
|
||||
+ LLVMMetadataRef Decl) {
|
||||
DITemplateParameterArray TParams =
|
||||
DITemplateParameterArray(unwrap<MDTuple>(TParam));
|
||||
+#if LLVM_VERSION_GE(8, 0)
|
||||
+ DISubprogram *Sub = Builder->createFunction(
|
||||
+ unwrapDI<DIScope>(Scope), Name, LinkageName, unwrapDI<DIFile>(File),
|
||||
+ LineNo, unwrapDI<DISubroutineType>(Ty), ScopeLine, fromRust(Flags),
|
||||
+ fromRust(SPFlags), TParams, unwrapDIPtr<DISubprogram>(Decl));
|
||||
+#else
|
||||
+ bool IsLocalToUnit = isSet(SPFlags & LLVMRustDISPFlags::SPFlagLocalToUnit);
|
||||
+ bool IsDefinition = isSet(SPFlags & LLVMRustDISPFlags::SPFlagDefinition);
|
||||
+ bool IsOptimized = isSet(SPFlags & LLVMRustDISPFlags::SPFlagOptimized);
|
||||
DISubprogram *Sub = Builder->createFunction(
|
||||
unwrapDI<DIScope>(Scope), Name, LinkageName, unwrapDI<DIFile>(File),
|
||||
LineNo, unwrapDI<DISubroutineType>(Ty), IsLocalToUnit, IsDefinition,
|
||||
ScopeLine, fromRust(Flags), IsOptimized, TParams,
|
||||
unwrapDIPtr<DISubprogram>(Decl));
|
||||
+#endif
|
||||
unwrap<Function>(Fn)->setSubprogram(Sub);
|
||||
return wrap(Sub);
|
||||
}
|
||||
@@ -773,14 +848,14 @@ extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateEnumerationType(
|
||||
LLVMRustDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
|
||||
LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits,
|
||||
uint32_t AlignInBits, LLVMMetadataRef Elements,
|
||||
- LLVMMetadataRef ClassTy, bool IsFixed) {
|
||||
+ LLVMMetadataRef ClassTy, bool IsScoped) {
|
||||
#if LLVM_VERSION_GE(7, 0)
|
||||
return wrap(Builder->createEnumerationType(
|
||||
unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNumber,
|
||||
SizeInBits, AlignInBits, DINodeArray(unwrapDI<MDTuple>(Elements)),
|
||||
- unwrapDI<DIType>(ClassTy), "", IsFixed));
|
||||
+ unwrapDI<DIType>(ClassTy), "", IsScoped));
|
||||
#else
|
||||
- // Ignore IsFixed on older LLVM.
|
||||
+ // Ignore IsScoped on older LLVM.
|
||||
return wrap(Builder->createEnumerationType(
|
||||
unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNumber,
|
||||
SizeInBits, AlignInBits, DINodeArray(unwrapDI<MDTuple>(Elements)),
|
||||
@@ -920,7 +995,11 @@ extern "C" void LLVMRustUnpackOptimizationDiagnostic(
|
||||
if (loc.isValid()) {
|
||||
*Line = loc.getLine();
|
||||
*Column = loc.getColumn();
|
||||
+#if LLVM_VERSION_GE(8, 0)
|
||||
+ FilenameOS << loc.getAbsolutePath();
|
||||
+#else
|
||||
FilenameOS << loc.getFilename();
|
||||
+#endif
|
||||
}
|
||||
|
||||
RawRustStringOstream MessageOS(MessageOut);
|
||||
diff --git a/src/rustllvm/llvm-rebuild-trigger b/src/rustllvm/llvm-rebuild-trigger
|
||||
index a268838de451..9ee1bceb632b 100644
|
||||
--- ./src/librustc_codegen_llvm/llvm/ffi.rs
|
||||
+++ ./src/librustc_codegen_llvm/llvm/ffi.rs
|
||||
@@ -2,7 +2,7 @@ use super::debuginfo::{
|
||||
DIBuilder, DIDescriptor, DIFile, DILexicalBlock, DISubprogram, DIType,
|
||||
DIBasicType, DIDerivedType, DICompositeType, DIScope, DIVariable,
|
||||
DIGlobalVariableExpression, DIArray, DISubrange, DITemplateTypeParameter, DIEnumerator,
|
||||
- DINameSpace, DIFlags,
|
||||
+ DINameSpace, DIFlags, DISPFlags,
|
||||
};
|
||||
|
||||
use libc::{c_uint, c_int, size_t, c_char};
|
||||
@@ -591,6 +591,20 @@ pub mod debuginfo {
|
||||
const FlagMainSubprogram = (1 << 21);
|
||||
}
|
||||
}
|
||||
+
|
||||
+ // These values **must** match with LLVMRustDISPFlags!!
|
||||
+ bitflags! {
|
||||
+ #[repr(C)]
|
||||
+ #[derive(Default)]
|
||||
+ pub struct DISPFlags: ::libc::uint32_t {
|
||||
+ const SPFlagZero = 0;
|
||||
+ const SPFlagVirtual = 1;
|
||||
+ const SPFlagPureVirtual = 2;
|
||||
+ const SPFlagLocalToUnit = (1 << 2);
|
||||
+ const SPFlagDefinition = (1 << 3);
|
||||
+ const SPFlagOptimized = (1 << 4);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
extern { pub type ModuleBuffer; }
|
||||
@@ -1387,11 +1401,9 @@ extern "C" {
|
||||
File: &'a DIFile,
|
||||
LineNo: c_uint,
|
||||
Ty: &'a DIType,
|
||||
- isLocalToUnit: bool,
|
||||
- isDefinition: bool,
|
||||
ScopeLine: c_uint,
|
||||
Flags: DIFlags,
|
||||
- isOptimized: bool,
|
||||
+ SPFlags: DISPFlags,
|
||||
Fn: &'a Value,
|
||||
TParam: &'a DIArray,
|
||||
Decl: Option<&'a DIDescriptor>)
|
||||
@@ -1529,7 +1541,7 @@ extern "C" {
|
||||
AlignInBits: u32,
|
||||
Elements: &'a DIArray,
|
||||
ClassType: &'a DIType,
|
||||
- IsFixed: bool)
|
||||
+ IsScoped: bool)
|
||||
-> &'a DIType;
|
||||
|
||||
pub fn LLVMRustDIBuilderCreateUnionType(Builder: &DIBuilder<'a>,
|
||||
--- a/src/librustc_codegen_llvm/debuginfo/mod.rs
|
||||
+++ ./src/librustc_codegen_llvm/debuginfo/mod.rs
|
||||
@@ -12,7 +12,7 @@ use self::source_loc::InternalDebugLocation::{self, UnknownLocation};
|
||||
|
||||
use llvm;
|
||||
use llvm::debuginfo::{DIFile, DIType, DIScope, DIBuilder, DISubprogram, DIArray, DIFlags,
|
||||
- DILexicalBlock};
|
||||
+ DISPFlags, DILexicalBlock};
|
||||
use rustc::hir::CodegenFnAttrFlags;
|
||||
use rustc::hir::def_id::{DefId, CrateNum, LOCAL_CRATE};
|
||||
use rustc::ty::subst::{Substs, UnpackedKind};
|
||||
@@ -283,7 +283,6 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
||||
let linkage_name = mangled_name_of_instance(self, instance);
|
||||
|
||||
let scope_line = span_start(self, span).line;
|
||||
- let is_local_to_unit = is_node_local_to_unit(self, def_id);
|
||||
|
||||
let function_name = CString::new(name).unwrap();
|
||||
let linkage_name = SmallCStr::new(&linkage_name.as_str());
|
||||
@@ -300,6 +299,14 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
||||
flags |= DIFlags::FlagNoReturn;
|
||||
}
|
||||
|
||||
+ let mut spflags = DISPFlags::SPFlagDefinition;
|
||||
+ if is_node_local_to_unit(self, def_id) {
|
||||
+ spflags |= DISPFlags::SPFlagLocalToUnit;
|
||||
+ }
|
||||
+ if self.sess().opts.optimize != config::OptLevel::No {
|
||||
+ spflags |= DISPFlags::SPFlagOptimized;
|
||||
+ }
|
||||
+
|
||||
let fn_metadata = unsafe {
|
||||
llvm::LLVMRustDIBuilderCreateFunction(
|
||||
DIB(self),
|
||||
@@ -309,11 +316,9 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
||||
file_metadata,
|
||||
loc.line as c_uint,
|
||||
function_type_metadata,
|
||||
- is_local_to_unit,
|
||||
- true,
|
||||
scope_line as c_uint,
|
||||
flags,
|
||||
- self.sess().opts.optimize != config::OptLevel::No,
|
||||
+ spflags,
|
||||
llfn,
|
||||
template_parameters,
|
||||
None)
|
||||
diff --git a/src/librustc_codegen_llvm/debuginfo/metadata.rs b/src/librustc_codegen_llvm/debuginfo/metadata.rs
|
||||
index 9f63038c3623..3a7864cb7a5a 100644
|
||||
--- a/src/librustc_codegen_llvm/debuginfo/metadata.rs
|
||||
+++ ./src/librustc_codegen_llvm/debuginfo/metadata.rs
|
||||
@@ -13,7 +13,7 @@ use value::Value;
|
||||
|
||||
use llvm;
|
||||
use llvm::debuginfo::{DIArray, DIType, DIFile, DIScope, DIDescriptor,
|
||||
- DICompositeType, DILexicalBlock, DIFlags};
|
||||
+ DICompositeType, DILexicalBlock, DIFlags, DebugEmissionKind};
|
||||
use llvm_util;
|
||||
|
||||
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
||||
@@ -846,6 +846,7 @@ pub fn compile_unit_metadata(tcx: TyCtxt,
|
||||
let producer = CString::new(producer).unwrap();
|
||||
let flags = "\0";
|
||||
let split_name = "\0";
|
||||
+ let kind = DebugEmissionKind::from_generic(tcx.sess.opts.debuginfo);
|
||||
|
||||
unsafe {
|
||||
let file_metadata = llvm::LLVMRustDIBuilderCreateFile(
|
||||
@@ -859,7 +860,8 @@ pub fn compile_unit_metadata(tcx: TyCtxt,
|
||||
tcx.sess.opts.optimize != config::OptLevel::No,
|
||||
flags.as_ptr() as *const _,
|
||||
0,
|
||||
- split_name.as_ptr() as *const _);
|
||||
+ split_name.as_ptr() as *const _,
|
||||
+ kind);
|
||||
|
||||
if tcx.sess.opts.debugging_opts.profile {
|
||||
let cu_desc_metadata = llvm::LLVMRustMetadataAsValue(debug_context.llcontext,
|
||||
diff --git a/src/librustc_codegen_llvm/llvm/ffi.rs b/src/librustc_codegen_llvm/llvm/ffi.rs
|
||||
index 853c1ff0047e..199c1220a2c4 100644
|
||||
--- a/src/librustc_codegen_llvm/llvm/ffi.rs
|
||||
+++ ./src/librustc_codegen_llvm/llvm/ffi.rs
|
||||
@@ -2,7 +2,7 @@ use super::debuginfo::{
|
||||
DIBuilder, DIDescriptor, DIFile, DILexicalBlock, DISubprogram, DIType,
|
||||
DIBasicType, DIDerivedType, DICompositeType, DIScope, DIVariable,
|
||||
DIGlobalVariableExpression, DIArray, DISubrange, DITemplateTypeParameter, DIEnumerator,
|
||||
- DINameSpace, DIFlags, DISPFlags,
|
||||
+ DINameSpace, DIFlags, DISPFlags, DebugEmissionKind,
|
||||
};
|
||||
|
||||
use libc::{c_uint, c_int, size_t, c_char};
|
||||
@@ -605,6 +605,26 @@ pub mod debuginfo {
|
||||
const SPFlagOptimized = (1 << 4);
|
||||
}
|
||||
}
|
||||
+
|
||||
+ /// LLVMRustDebugEmissionKind
|
||||
+ #[derive(Copy, Clone)]
|
||||
+ #[repr(C)]
|
||||
+ pub enum DebugEmissionKind {
|
||||
+ NoDebug,
|
||||
+ FullDebug,
|
||||
+ LineTablesOnly,
|
||||
+ }
|
||||
+
|
||||
+ impl DebugEmissionKind {
|
||||
+ pub fn from_generic(kind: rustc::session::config::DebugInfo) -> Self {
|
||||
+ use rustc::session::config::DebugInfo;
|
||||
+ match kind {
|
||||
+ DebugInfo::None => DebugEmissionKind::NoDebug,
|
||||
+ DebugInfo::Limited => DebugEmissionKind::LineTablesOnly,
|
||||
+ DebugInfo::Full => DebugEmissionKind::FullDebug,
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
extern { pub type ModuleBuffer; }
|
||||
@@ -1381,7 +1401,8 @@ extern "C" {
|
||||
isOptimized: bool,
|
||||
Flags: *const c_char,
|
||||
RuntimeVer: c_uint,
|
||||
- SplitName: *const c_char)
|
||||
+ SplitName: *const c_char,
|
||||
+ kind: DebugEmissionKind)
|
||||
-> &'a DIDescriptor;
|
||||
|
||||
pub fn LLVMRustDIBuilderCreateFile(Builder: &DIBuilder<'a>,
|
||||
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp
|
||||
index 7905e9f0f237..e973318057c6 100644
|
||||
--- a/src/rustllvm/RustWrapper.cpp
|
||||
+++ ./src/rustllvm/RustWrapper.cpp
|
||||
@@ -576,6 +576,25 @@ static DISubprogram::DISPFlags fromRust(LLVMRustDISPFlags SPFlags) {
|
||||
}
|
||||
#endif
|
||||
|
||||
+enum class LLVMRustDebugEmissionKind {
|
||||
+ NoDebug,
|
||||
+ FullDebug,
|
||||
+ LineTablesOnly,
|
||||
+};
|
||||
+
|
||||
+static DICompileUnit::DebugEmissionKind fromRust(LLVMRustDebugEmissionKind Kind) {
|
||||
+ switch (Kind) {
|
||||
+ case LLVMRustDebugEmissionKind::NoDebug:
|
||||
+ return DICompileUnit::DebugEmissionKind::NoDebug;
|
||||
+ case LLVMRustDebugEmissionKind::FullDebug:
|
||||
+ return DICompileUnit::DebugEmissionKind::FullDebug;
|
||||
+ case LLVMRustDebugEmissionKind::LineTablesOnly:
|
||||
+ return DICompileUnit::DebugEmissionKind::LineTablesOnly;
|
||||
+ default:
|
||||
+ report_fatal_error("bad DebugEmissionKind.");
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
extern "C" uint32_t LLVMRustDebugMetadataVersion() {
|
||||
return DEBUG_METADATA_VERSION;
|
||||
}
|
||||
@@ -616,11 +635,13 @@ extern "C" void LLVMRustDIBuilderFinalize(LLVMRustDIBuilderRef Builder) {
|
||||
extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateCompileUnit(
|
||||
LLVMRustDIBuilderRef Builder, unsigned Lang, LLVMMetadataRef FileRef,
|
||||
const char *Producer, bool isOptimized, const char *Flags,
|
||||
- unsigned RuntimeVer, const char *SplitName) {
|
||||
+ unsigned RuntimeVer, const char *SplitName,
|
||||
+ LLVMRustDebugEmissionKind Kind) {
|
||||
auto *File = unwrapDI<DIFile>(FileRef);
|
||||
|
||||
return wrap(Builder->createCompileUnit(Lang, File, Producer, isOptimized,
|
||||
- Flags, RuntimeVer, SplitName));
|
||||
+ Flags, RuntimeVer, SplitName,
|
||||
+ fromRust(Kind)));
|
||||
}
|
||||
|
||||
extern "C" LLVMMetadataRef
|
|
@ -10,7 +10,7 @@ termux_setup_rust() {
|
|||
export $ENV_NAME=$CC
|
||||
|
||||
curl https://sh.rustup.rs -sSf > $TERMUX_PKG_TMPDIR/rustup.sh
|
||||
sh $TERMUX_PKG_TMPDIR/rustup.sh -y --default-toolchain 1.32.0
|
||||
sh $TERMUX_PKG_TMPDIR/rustup.sh -y --default-toolchain 1.33.0
|
||||
export PATH=$HOME/.cargo/bin:$PATH
|
||||
|
||||
export RUSTFLAGS="-C link-arg=-Wl,-rpath=$TERMUX_PREFIX/lib -C link-arg=-Wl,--enable-new-dtags"
|
||||
|
|
|
@ -40,6 +40,8 @@ PACKAGES+=" libssl-dev" # Needed to build Rust
|
|||
PACKAGES+=" gnupg" # Needed to verify downloaded .debs
|
||||
PACKAGES+=" jq" # Needed by bintray upload script.
|
||||
PACKAGES+=" lua5.3" # Needed to build luarocks package.
|
||||
PACKAGES+=" python3-recommonmark" # needed for llvm-8 documentation
|
||||
PACKAGES+=" llvm-7-tools" # so we don't build llvm for build
|
||||
|
||||
sudo DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -yq --no-install-recommends $PACKAGES
|
||||
|
|
Loading…
Reference in New Issue