Auto merge of #39227 - alexcrichton:enable-i686-musl, r=brson

travis: Enable testing i686 musl

This fixes the final issues with the target related to unwinding by disabling
removal of frame pointers.
This commit is contained in:
bors 2017-01-24 03:43:22 +00:00
commit 0ba60387f2
3 changed files with 16 additions and 2 deletions

View File

@ -32,10 +32,10 @@ ENV RUST_CONFIGURE_ARGS \
--musl-root-x86_64=/musl-x86_64 \
--musl-root-i686=/musl-i686
# FIXME should also test i686-unknown-linux-musl
ENV SCRIPT \
python2.7 ../x.py test \
--target x86_64-unknown-linux-musl \
--target i686-unknown-linux-musl \
--target i586-unknown-linux-gnu \
&& \
python2.7 ../x.py dist \

View File

@ -57,7 +57,7 @@ cp lib/libunwind.a /musl-x86_64/lib
# for x86_64 again)
rm -rf *
# for i686
CFLAGS="$CFLAGS -m32 -g" CXXFLAGS="$CXXFLAGS -m32 -g" cmake ../libunwind-release_37 \
CFLAGS="$CFLAGS -m32" CXXFLAGS="$CXXFLAGS -m32" cmake ../libunwind-release_37 \
-DLLVM_PATH=/build/llvm-release_37 \
-DLIBUNWIND_ENABLE_SHARED=0
make -j10

View File

@ -17,6 +17,20 @@ pub fn target() -> TargetResult {
base.pre_link_args.push("-m32".to_string());
base.pre_link_args.push("-Wl,-melf_i386".to_string());
// The unwinder used by i686-unknown-linux-musl, the LLVM libunwind
// implementation, apparently relies on frame pointers existing... somehow.
// It's not clear to me why nor where this dependency is introduced, but the
// test suite does not pass with frame pointers eliminated and it passes
// with frame pointers present.
//
// If you think that this is no longer necessary, then please feel free to
// ignore! If it still passes the test suite and the bots then sounds good
// to me.
//
// This may or may not be related to this bug:
// https://llvm.org/bugs/show_bug.cgi?id=30879
base.eliminate_frame_pointer = false;
Ok(Target {
llvm_target: "i686-unknown-linux-musl".to_string(),
target_endian: "little".to_string(),