Package: rustc / 1.24.1+dfsg1-1~deb9u4

Metadata

Package Version Patches format
rustc 1.24.1+dfsg1-1~deb9u4 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
u sparc64 detection.patch | (download)

src/libcompiler_builtins/compiler-rt/lib/builtins/int_lib.h | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 add/fix detection for sparc64
 Already applied upstream in various places
u fix sparc64 cabi.patch | (download)

src/librustc_trans/cabi_sparc64.rs | 6 5 + 1 - 0 !
1 file changed, 5 insertions(+), 1 deletion(-)

---
u powerpcspe support.patch | (download)

src/bootstrap/native.rs | 1 1 + 0 - 0 !
src/librustc_back/target/mod.rs | 1 1 + 0 - 0 !
src/librustc_back/target/powerpc_unknown_linux_gnuspe.rs | 35 35 + 0 - 0 !
src/test/run-make/atomic-lock-free/Makefile | 2 2 + 0 - 0 !
src/tools/build-manifest/src/main.rs | 1 1 + 0 - 0 !
src/vendor/cc/src/lib.rs | 1 1 + 0 - 0 !
6 files changed, 41 insertions(+)

---
u gperf 3.1.patch | (download)

src/rt/hoedown/Makefile | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 support gperf 3.1
 gperf 3.1 will output `register size_t n` instead of `register unsigned int n`
 like [here](https://github.com/hoedown/hoedown/blob/2508c4b/src/html_blocks.c#L62).
 This requires `stddef.h`; giving `-I` to the `gperf` invocation will include
 `string.h` which includes `stddef.h`.
u reproducible build.patch | (download)

src/librustc_llvm/build.rs | 5 5 + 0 - 0 !
1 file changed, 5 insertions(+)

 don't split dwarf debug for a fully-reproducible build
u 0001 Ignore run pass sse2 when using system LLVM.patch | (download)

src/test/run-pass/sse2.rs | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 [patch] ignore run-pass/sse2 when using system llvm

This is a test of `target_feature`, which needs a rust-specific patch to
LLVM to add `MCSubtargetInfo::getFeatureTable()`.

u 0002 Use a range to identify SIGSEGV in stack guards.patch | (download)

src/libstd/sys/redox/thread.rs | 5 3 + 2 - 0 !
src/libstd/sys/unix/stack_overflow.rs | 9 2 + 7 - 0 !
src/libstd/sys/unix/thread.rs | 115 70 + 45 - 0 !
src/libstd/sys/wasm/thread.rs | 5 3 + 2 - 0 !
src/libstd/sys/windows/thread.rs | 5 3 + 2 - 0 !
src/libstd/sys_common/thread_info.rs | 9 5 + 4 - 0 !
6 files changed, 86 insertions(+), 62 deletions(-)

 [patch 2/2] use a range to identify sigsegv in stack guards
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Previously, the `guard::init()` and `guard::current()` functions were
returning a `usize` address representing the top of the stack guard,
respectively for the main thread and for spawned threads.  The `SIGSEGV`
handler on `unix` targets checked if a fault was within one page below
that address, if so reporting it as a stack overflow.

Now `unix` targets report a `Range<usize>` representing the guard
memory, so it can cover arbitrary guard sizes.  Non-`unix` targets which
always return `None` for guards now do so with `Option<!>`, so they
don't pay any overhead.

For `linux-gnu` in particular, the previous guard upper-bound was
`stackaddr + guardsize`, as the protected memory was *inside* the stack.
This was a glibc bug, and starting from 2.27 they are moving the guard
*past* the end of the stack.  However, there's no simple way for us to
know where the guard page actually lies, so now we declare it as the
whole range of `stackaddr ± guardsize`, and any fault therein will be
called a stack overflow.  This fixes #47863.

u rust pr46592 bootstrap libdir.patch | (download)

src/bootstrap/bin/rustdoc.rs | 13 12 + 1 - 0 !
src/bootstrap/builder.rs | 9 6 + 3 - 0 !
src/bootstrap/check.rs | 2 1 + 1 - 0 !
src/bootstrap/compile.rs | 13 4 + 9 - 0 !
src/bootstrap/config.rs | 1 0 + 1 - 0 !
src/bootstrap/doc.rs | 2 1 + 1 - 0 !
6 files changed, 24 insertions(+), 16 deletions(-)

---
u rust pr48362 libdir relative.patch | (download)

src/bootstrap/builder.rs | 7 4 + 3 - 0 !
src/bootstrap/compile.rs | 3 1 + 2 - 0 !
src/bootstrap/config.rs | 13 12 + 1 - 0 !
3 files changed, 17 insertions(+), 6 deletions(-)

---
u ignoretest armhf_01.patch | (download)

src/test/run-make/atomic-lock-free/Makefile | 2 2 + 0 - 0 !
1 file changed, 2 insertions(+)

 ignore atomic-lock-free tests on armhf
 Last checked this still affects 1.17
u ignoretest armhf_02.patch | (download)

src/test/run-make/relocation-model/Makefile | 7 6 + 1 - 0 !
1 file changed, 6 insertions(+), 1 deletion(-)

 disable some relocation-model tests for armhf
 Last checked this still affects 1.17
u ignoretest armhf_03.patch | (download)

src/doc/reference/src/items/functions.md | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 disable reference.md "items_and_attributes_15" doctest, failing on armhf
 This passes on i386 amd64 arm64
 .
 See https://gist.github.com/infinity0/2f5452d4ee9deb2f1bacb8b39c987c9c
 for thread stacktrace from 1.10.0 when it hung instead of failed; eddyb from
 #rustc suggested this might be an LLVM issue.
 .
 Last checked this still affects 1.17
u ignoretest armhf_05.patch | (download)

src/test/debuginfo/macro-stepping.rs | 1 1 + 0 - 0 !
1 file changed, 1 insertion(+)

 disable failing debuginfo-gdb test on armhf
 Last checked this still affects 1.17
u ignoretest armhf_06.patch | (download)

src/test/run-make/extern-fn-struct-passing-abi/Makefile | 2 2 + 0 - 0 !
1 file changed, 2 insertions(+)

 disable failing run-make test on armhf
 Last checked this still affects 1.18
u ignoretest arm64.patch | (download)

src/test/run-pass-valgrind/down-with-thread-dtors.rs | 1 1 + 0 - 0 !
1 file changed, 1 insertion(+)

---
u ignoretest ppc64el.patch | (download)

src/libarena/lib.rs | 3 3 + 0 - 0 !
src/libstd/thread/local.rs | 6 3 + 3 - 0 !
2 files changed, 6 insertions(+), 3 deletions(-)

 ignore failing tests on ppc64el
 There is a workaround (see bug below) but we can't use it due to
 https://github.com/rust-lang/rust/issues/42476
 https://github.com/rust-lang/rust/issues/42532
u ignoretest ppc64el_02.patch | (download)

src/test/run-pass/simd-intrinsic-generic-cast.rs | 4 4 + 0 - 0 !
1 file changed, 4 insertions(+)

 ignore failing tests on ppc64el
u prefer local css.patch | (download)

src/bootstrap/doc.rs | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 prefer local css to remote
u make tests work without rpath.patch | (download)

src/test/run-make/sysroot-crates-are-unstable/Makefile | 6 5 + 1 - 0 !
1 file changed, 5 insertions(+), 1 deletion(-)

---
u reproducible dl stage0.patch | (download)

src/bootstrap/bootstrap.py | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

---
gcc 4.8 aarch64 ice.diff | (download)

src/libcompiler_builtins/compiler-rt/lib/builtins/trunctfdf2.c | 10 10 + 0 - 0 !
1 file changed, 10 insertions(+)

---
d disable cargo vendor.patch | (download)

src/bootstrap/dist.rs | 5 4 + 1 - 0 !
1 file changed, 4 insertions(+), 1 deletion(-)

 don't check for cargo-vendor when building from (debian's) git
d rust gdb paths | (download)

src/etc/rust-gdb | 8 5 + 3 - 0 !
1 file changed, 5 insertions(+), 3 deletions(-)

 hardcode gdb python module directory
 Debian package installs python modules into a fixed directory, so
 just hardcode path in wrapper script.
d rust lldb paths | (download)

src/etc/rust-lldb | 9 3 + 6 - 0 !
1 file changed, 3 insertions(+), 6 deletions(-)

 hardcode lldb python module directory
 Debian package installs python modules into a fixed directory, so
 just hardcode path in wrapper script.
d add soname.patch | (download)

src/librustc_trans/back/link.rs | 7 7 + 0 - 0 !
1 file changed, 7 insertions(+)

 set dt_soname when building dylibs
 In Rust, library filenames include a version-specific hash to help
 the run-time linker find the correct version.  Unlike in C/C++, the
 compiler looks for all libraries matching a glob that ignores the
 hash and reads embedded metadata to work out versions, etc.
 .
 The upshot is that there is no need for the usual "libfoo.so ->
 libfoo-1.2.3.so" symlink common with C/C++ when building with Rust,
 and no need to communicate an alternate filename to use at run-time
 vs compile time.  If linking to a Rust dylib from C/C++ however, a
 "libfoo.so -> libfoo-$hash.so" symlink may well be useful and in
 this case DT_SONAME=libfoo-$hash.so would be required.  More
 mundanely, various tools (eg: dpkg-shlibdeps) complain if they don't
 find DT_SONAME on shared libraries in public directories.
 .
 This patch passes -Wl,-soname=$outfile when building dylibs (and
 using a GNU linker).
d dont download stage0.patch | (download)

src/bootstrap/bootstrap.py | 13 7 + 6 - 0 !
1 file changed, 7 insertions(+), 6 deletions(-)

 don't download sha256 if it's already available locally
 In Debian we provide the stage0 tarballs as a separate component so that the
 buildds don't need to access the network during the build.
d no web dependencies in doc.patch | (download)

src/doc/book/second-edition/theme/index.hbs | 70 5 + 65 - 0 !
src/doc/reference/theme/index.hbs | 70 5 + 65 - 0 !
src/tools/linkchecker/main.rs | 5 5 + 0 - 0 !
src/vendor/mdbook/src/book/mod.rs | 8 0 + 8 - 0 !
src/vendor/mdbook/src/renderer/html_handlebars/hbs_renderer.rs | 48 1 + 47 - 0 !
src/vendor/mdbook/src/theme/book.js | 23 1 + 22 - 0 !
src/vendor/mdbook/src/theme/index.hbs | 70 5 + 65 - 0 !
src/vendor/mdbook/src/theme/mod.rs | 34 0 + 34 - 0 !
8 files changed, 22 insertions(+), 306 deletions(-)

 use local web resources instead of remote ones
d ignore removed submodules.patch | (download)

src/Cargo.toml | 24 0 + 24 - 0 !
src/bootstrap/bootstrap.py | 4 0 + 4 - 0 !
src/bootstrap/builder.rs | 5 1 + 4 - 0 !
3 files changed, 1 insertion(+), 32 deletions(-)

 ignore submodules that we're not building
d armel disable kernel helpers.patch | (download)

src/libcompiler_builtins/build.rs | 6 3 + 3 - 0 !
1 file changed, 3 insertions(+), 3 deletions(-)

---
i686 baseline.patch | (download)

src/librustc_back/target/i686_unknown_linux_gnu.rs | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

---