[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#905795: rustc: Please include workaround for regression on sparc64

Source: rustc
Version: 1.28.0+dfsg1-2
Severity: normal
Tags: patch
User: debian-sparc@lists.debian.org
Usertags: sparc64


With version 1.28, the Rust compiler has regressed in the sense that
it generates code with unaligned access [1].

This problem existed in the past and was supposed to be fixed [2],
however it just recently came back.

The attached patch contains a workaround for sparc64 such that
rustc will at least build again. Please include it in the next


> [1] https://github.com/rust-lang/rust/issues/53181
> [2] https://github.com/rust-lang/rust/pull/45679

  .''`.  John Paul Adrian Glaubitz
 : :' :  Debian Developer - glaubitz@debian.org
 `. `'   Freie Universitaet Berlin - glaubitz@physik.fu-berlin.de
   `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913
Description: <short summary of the patch>
 TODO: Put a short summary on the line above and replace this paragraph
 with a longer explanation of this change. Complete the meta-information
 with other relevant fields (see below for details). To make it easier, the
 information below has been extracted from the changelog. Adjust it or drop
 rustc (1.28.0+dfsg1-2) unstable; urgency=medium
   * Switch on verbose-tests to restore the old pre-1.28 behaviour, and restore
     old failure-counting logic.
   * Allow 50 test failures on s390x, restored failure-counting logic avoids
     more double-counts.
Author: Ximin Luo <infinity0@debian.org>

The information above should follow the Patch Tagging Guidelines, please
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:

Origin: <vendor|upstream|other>, <url of original patch>
Bug: <url in upstream bugtracker>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: <no|not-needed|url proving that it has been forwarded>
Reviewed-By: <name and email of someone who approved the patch>
Last-Update: 2018-08-09

--- rustc-1.28.0+dfsg1.orig/src/libsyntax_pos/span_encoding.rs
+++ rustc-1.28.0+dfsg1/src/libsyntax_pos/span_encoding.rs
@@ -26,7 +26,9 @@ use std::hash::{Hash, Hasher};
 /// The primary goal of `Span` is to be as small as possible and fit into other structures
 /// (that's why it uses `packed` as well). Decoding speed is the second priority.
 /// See `SpanData` for the info on span fields in decoded representation.
+/// Workaround for compiler bug: https://github.com/rust-lang/rust/issues/53181
+#[cfg_attr(not(any(target_arch = "sparc64", target_arch = "sparcv9")), repr(packed))]
 pub struct Span(u32);
 impl Copy for Span {}

Reply to: