[3.5 Release] Release Candidate 3 Now Available

The third 3.5 release candidate is now available. Please pick up sources and binaries here:

  https://llvm.org/pre-release/3.5

Run it through its phases and report any bugs you find!

Share and enjoy!
-bw

Ahem. And now for the correct URL:

http://llvm.org/pre-releases/3.5/

-bw

You probably mean...

http://llvm.org/pre-releases/3.5/

:smiley:

cheers,
--renato

And you probably want to update the Release Candidates page to show "Release Candidate 3", not "Release Candidate 2".

The ARM binaries seem to be corrupt. Although correctly signed, the xz file seems to be truncated

arm7% unxz < clang+llvm-3.5.0-rc3-armv7a-linux-gnueabihf.tar.xz | wc -c
unxz: (stdin): Unexpected end of input
133214381

    M.E.O.

oops, my fault. Bill, I have uploaded it again to the SFTP server.

cheers,
--renato

Hi Bill,

I downloaded:

http://llvm.org/pre-releases/3.5/

then did sig check on all:

~/dwnlds/llvm/3.5/rc3 $ gpg --verify cfe-3.5.0rc3.src.tar.xz.sig
cfe-3.5.0rc3.src.tar.xz
gpg: Signature made Wed 20 Aug 2014 01:05:37 PM CDT using RSA key ID
BB5A0569
gpg: Good signature from "Bill Wendling <void@llvm.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the
owner.
Primary key fingerprint: 54E3 BDE3 3185 D9F6 9664 D224 55F5 CD70 BB5A 0569
~/dwnlds/llvm/3.5/rc3 $ gpg --verify compiler-rt-3.5.0rc3.src.tar.xz.sig
compiler-rt-3.5.0rc3.src.tar.xz
gpg: Signature made Wed 20 Aug 2014 01:05:48 PM CDT using RSA key ID
BB5A0569
gpg: Good signature from "Bill Wendling <void@llvm.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the
owner.
Primary key fingerprint: 54E3 BDE3 3185 D9F6 9664 D224 55F5 CD70 BB5A 0569
~/dwnlds/llvm/3.5/rc3 $ gpg --verify libcxxabi-3.5.0rc3.src.tar.xz.sig
libcxxabi-3.5.0rc3.src.tar.xz
gpg: Signature made Wed 20 Aug 2014 01:06:04 PM CDT using RSA key ID
BB5A0569
gpg: Good signature from "Bill Wendling <void@llvm.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the
owner.
Primary key fingerprint: 54E3 BDE3 3185 D9F6 9664 D224 55F5 CD70 BB5A 0569
~/dwnlds/llvm/3.5/rc3 $ gpg --verify libcxx-3.5.0rc3.src.tar.xz.sig
libcxx-3.5.0rc3.src.tar.xz
gpg: Signature made Wed 20 Aug 2014 01:05:59 PM CDT using RSA key ID
BB5A0569
gpg: Good signature from "Bill Wendling <void@llvm.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the
owner.
Primary key fingerprint: 54E3 BDE3 3185 D9F6 9664 D224 55F5 CD70 BB5A 0569
~/dwnlds/llvm/3.5/rc3 $ gpg --verify llvm-3.5.0rc3.src.tar.xz.sig
llvm-3.5.0rc3.src.tar.xz
gpg: Signature made Wed 20 Aug 2014 01:06:19 PM CDT using RSA key ID
BB5A0569
gpg: Good signature from "Bill Wendling <void@llvm.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the
owner.
Primary key fingerprint: 54E3 BDE3 3185 D9F6 9664 D224 55F5 CD70 BB5A 0569
~/dwnlds/llvm/3.5/rc3 $

then unzipped and added the appropriate symlinks:

~/dwnlds/llvm/3.5/rc3 $ find llvm-3.5.0rc3.src -type l -ls
9590094 0 lrwxrwxrwx 1 evansl evansl 57 Aug 24 21:30
llvm-3.5.0rc3.src/projects/compiler-rt ->
/home/evansl/dwnlds/llvm/3.5/rc3/compiler-rt-3.5.0rc3.src
9590095 0 lrwxrwxrwx 1 evansl evansl 49 Aug 24 21:31
llvm-3.5.0rc3.src/tools/clang ->
/home/evansl/dwnlds/llvm/3.5/rc3/cfe-3.5.0rc3.src
~/dwnlds/llvm/3.5/rc3 $

Then, followed instructions on:

http://llvm.org/docs/GettingStarted.html#requirements

for using cmake as follows:
-*- mode: compilation; default-directory:
"~/dwnlds/llvm/3.5/rc3/build-variants/" -*-
Compilation started at Mon Aug 25 17:30:37

make cmake.build
install -d release/cmake.build
cd release/cmake.build ; \
          CC="/usr/local/bin/gcc" ; \
          CXX="/usr/local/bin/g++" ; \
          cmake /home/evansl/dwnlds/llvm/3.5/rc3/llvm-3.5.0rc3.src
-DCMAKE_CXX_LINK_FLAGS="-L/usr/local/lib64 -Wl,-rpath -Wl,/usr/local/lib64"
-- The C compiler identification is GNU 4.8.2
-- The CXX compiler identification is GNU 4.8.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Looking for C++ include cxxabi.h
-- Looking for C++ include cxxabi.h - found
.
.
.
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Could NOT find LibXml2 (missing: LIBXML2_LIBRARIES LIBXML2_INCLUDE_DIR)
-- Clang version: 3.5.0
-- Performing Test CXX_SUPPORTS_NO_NESTED_ANON_TYPES_FLAG
-- Performing Test CXX_SUPPORTS_NO_NESTED_ANON_TYPES_FLAG - Failed
-- Configuring done
-- Generating done
-- Build files have been written to:
/home/evansl/dwnlds/llvm/3.5/rc3/build-variants/release/cmake.build
touch release/dones/cmake.build.done

Compilation finished at Mon Aug 25 17:30:48

Then built it:

~/dwnlds/llvm/3.5/rc3/build-variants/release/cmake.build $ make
Scanning dependencies of target LLVMSupport
[ 1%] Building CXX object
lib/Support/CMakeFiles/LLVMSupport.dir/APFloat.cpp.o
[ 1%] Building CXX object
lib/Support/CMakeFiles/LLVMSupport.dir/APInt.cpp.o
[ 1%] Building CXX object
lib/Support/CMakeFiles/LLVMSupport.dir/APSInt.cpp.o
[ 1%] Building CXX object
lib/Support/CMakeFiles/LLVMSupport.dir/ARMBuildAttrs.cpp.o
[ 1%] Building CXX object
lib/Support/CMakeFiles/LLVMSupport.dir/ARMWinEH.cpp.o
[ 1%] Building CXX object
lib/Support/CMakeFiles/LLVMSupport.dir/Allocator.cpp.o
[ 1%] Building CXX object
lib/Support/CMakeFiles/LLVMSupport.dir/BlockFrequency.cpp.o
[ 1%] Building CXX object
lib/Support/CMakeFiles/LLVMSupport.dir/BranchProbability.cpp.o
[ 1%] Building CXX object
lib/Support/CMakeFiles/LLVMSupport.dir/circular_raw_ostream.cpp.o
[ 1%] Building CXX object
lib/Support/CMakeFiles/LLVMSupport.dir/CommandLine.cpp.o
[ 1%] Building CXX object
lib/Support/CMakeFiles/LLVMSupport.dir/Compression.cpp.o
.
.
.
Scanning dependencies of target clang-check
[100%] Building CXX object
tools/clang/tools/clang-check/CMakeFiles/clang-check.dir/ClangCheck.cpp.o
Linking CXX executable ../../../../bin/clang-check
[100%] Built target clang-check
~/dwnlds/llvm/3.5/rc3/build-variants/release/cmake.build $

However, when compiling a hello_world.cpp:

-*- mode: compilation; default-directory:
"~/dwnlds/llvm/3.5/rc3/build-variants/" -*-
Compilation started at Mon Aug 25 18:55:57

make cmake.run
./release/cmake.build/bin/clang++ -std=c++1y hello_world.cpp -o
hello_world.exe
In file included from hello_world.cpp:1:
In file included from
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/iostream:39:
In file included from
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/ostream:38:
In file included from
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/ios:42:
In file included from
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/ios_base.h:41:
In file included from
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/locale_classes.h:40:
In file included from
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/string:52:
In file included from
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/basic_string.h:2815:
In file included from
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/ext/string_conversions.h:43:
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/cstdio:120:11:
error: no member named 'gets' in the
      global namespace
  using ::gets;
        ~~^
1 error generated.
make: *** [cmake.run] Error 1

Compilation exited abnormally with code 2 at Mon Aug 25 18:55:59

where hello_world.cpp is just:

#include <iostream>
int main()
{
    std::cout<<"Hello World!\n";
    return 0;
}

What needs to change to get this hello_world.cpp to compiler?

TIA.

-regards,
Larry

This is nothing to do with Clang; the problem is that glibc speculatively
removed 'gets' in their C++14 mode (long before it was removed from the C++
standard), and libstdc++4.8 still expects it to exist in *their* C++14 mode.

Switch to a standard library that supports C++14 and you should be OK. If
you built and installed libc++, this should be as simple as adding
'-stdlib=libc++' to your clang command line.

That should be up there now.

-bw

The third 3.5 release candidate is now available. Please pick up sources

and binaries here:

[snip]

Hi Bill,

I downloaded:

http://llvm.org/pre-releases/3.5/

[snip]

Then, followed instructions on:

http://llvm.org/docs/GettingStarted.html#requirements

for using cmake as follows:
-*- mode: compilation; default-directory:
"~/dwnlds/llvm/3.5/rc3/build-variants/" -*-
Compilation started at Mon Aug 25 17:30:37

make cmake.build
install -d release/cmake.build
cd release/cmake.build ; \
          CC="/usr/local/bin/gcc" ; \
          CXX="/usr/local/bin/g++" ; \
          cmake /home/evansl/dwnlds/llvm/3.5/rc3/llvm-3.5.0rc3.src
-DCMAKE_CXX_LINK_FLAGS="-L/usr/local/lib64 -Wl,-rpath -Wl,/usr/local/lib64"

[snip]

-- The C compiler identification is GNU 4.8.2
-- The CXX compiler identification is GNU 4.8.2
Then built it:

~/dwnlds/llvm/3.5/rc3/build-variants/release/cmake.build $ make
Scanning dependencies of target LLVMSupport

[snip]

[100%] Built target clang-check
~/dwnlds/llvm/3.5/rc3/build-variants/release/cmake.build $

However, when compiling a hello_world.cpp:

-*- mode: compilation; default-directory:
"~/dwnlds/llvm/3.5/rc3/build-variants/" -*-
Compilation started at Mon Aug 25 18:55:57

make cmake.run
./release/cmake.build/bin/clang++ -std=c++1y hello_world.cpp -o
hello_world.exe

[snip]

/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/cstdio:120:11:
error: no member named 'gets' in the
      global namespace
  using ::gets;
        ~~^
1 error generated.
make: *** [cmake.run] Error 1

Compilation exited abnormally with code 2 at Mon Aug 25 18:55:59

where hello_world.cpp is just:

#include <iostream>
int main()
{
    std::cout<<"Hello World!\n";
    return 0;
}

What needs to change to get this hello_world.cpp to compiler?

This is nothing to do with Clang; the problem is that glibc speculatively
removed 'gets' in their C++14 mode (long before it was removed from the C++
standard), and libstdc++4.8 still expects it to exist in *their* C++14 mode.

Switch to a standard library that supports C++14 and you should be OK. If
you built and installed libc++, this should be as simple as adding
'-stdlib=libc++' to your clang command line.

Thanks very much Richard. Your solution worked!

make -k cmake.run
./release/cmake.build/bin/clang++ -std=c++1y -stdlib=libc++
hello_world.cpp -o hello_world.exe
./hello_world.exe
Hello World!

Compilation finished at Tue Aug 26 08:04:56

Very sadly, someone just pointed out that the latest Ubuntu and Debian installations of certain multiarch/cross-compiling GCCs are incompatible with Clang’s driver.

I’m working on a fix now…

See http://llvm.org/PR19289 for lots of details. It had already been reported before but I had missed it and so had most others. =[

I’m pretty sure this breaks every 32-bit debian based Linux distro. I’ve asked David Majnemer to try to confirm or refute that. If it does impact every 32-bit debian based Linux distro, I think this should be a release blocker sad as I am to say it. CC-ing Richard, Doug, etc. Have I mentioned how much I hate the header search logic for GCC? =/

In good news, the fix was reasonably simple and I’ve already committed it here: r216531

It has zero impact outside of Linux and outside of the Clang driver. I’ve asked several folks to test it as much as they can of course. Let me know what if anything else I can do.

Just FYI, I confirmed with Sylvestre that they’ve been carrying a patch in order to build working debian packages for 32-bit platforms:

http://anonscm.debian.org/viewvc/pkg-llvm/llvm-toolchain/branches/3.5/debian/patches/libstdc%2B%2B-header-i386.diff?revision=1282&view=markup

I’ve asked him to test out whether this is still needed, but I strongly suspect that this is trying to cope with the same fundamental bug. It means that the source packages for 3.5 or non ‘.deb’ binary packages will fail to work on any modern debian or ubuntu 32-bit distro without r216531. =[

(and if anyone wants to cherrypick this change, you want r216572 as well which fixes a think-o in the original…)

This looks serious, should we try an RC4?

--renato

Personally, I think so. But the decision is Bill's.

I've asked him to test out whether this is still needed, but I strongly
suspect that this is trying to cope with the same fundamental bug. It means
that the source packages for 3.5 or non '.deb' binary packages will fail to
work on any modern debian or ubuntu 32-bit distro without r216531. =[

This looks serious, should we try an RC4?

This does feel serious enough for an RC4.

I know it’s serious when Doug finds the time to write an email. Sorry I couldn’t resist :stuck_out_tongue:

Ha ha ha