[cfe-dev] recent change broke -fcatch-undefined-behavior

Alexey Samsonov samsonov at google.com
Mon Oct 15 23:42:15 PDT 2012


On Tue, Oct 16, 2012 at 1:46 AM, Jean-Daniel Dupas
<devlists at shadowlab.org>wrote:

>
> Le 15 oct. 2012 à 23:32, Jean-Daniel Dupas <devlists at shadowlab.org> a
> écrit :
>
>
> Le 15 oct. 2012 à 21:31, "Sean McBride" <sean at rogue-research.com> a écrit
> :
>
> On Mon, 15 Oct 2012 12:21:17 -0700, David Blaikie said:
>
> I see that there have been recent changes wrt -fcatch-undefined-
>
> behavior, and within the last week or so something changed such that my
> own build of clang (built with CMake on OS X) is unable to build simple
> programs that use -fcatch-undefined-behavior, I get link errors like:
>
>
> "___ubsan_handle_divrem_overflow", referenced from:
>    _main in test-OSZvjm.o
> "___ubsan_handle_type_mismatch", referenced from:
>    _main in test-OSZvjm.o
>
> Any ideas why?
>
>
> This is a new feature. Instead of generating traps, -fcatch-undefined-
> behavior generates library calls that make it easier to find what is
> wrong (each undefined behavior calls a different function).
>
> This functions are provided by the ubsan library that is part of
> compiler-rt. But I'm not sure the integration to the Makefile build
> system is done yet.
>
>
> You mean with the CMake build system?
>
>
> Generally "Makefile build system" describes the configure+make build
> system (at least when it's discussed here).
>
> Perhaps if I build using autotools it will work?  Or do you mean it
>
> works nowhere yet?
>
> I believe the implication is that it works with the CMake build
> system. But you will need to checkout the compiler-rt LLVM project
> into llvm/projects to build it along with clang. (& I assume you'll
> need to install compiler-rt alongside clang as well, but hopefully the
> install target does that)
>
>
> As I said in my original post, I am using CMake (not autotools aka
> configure+make).  I do have llvm/projects.
>
> My full little 'build everything' script is:
>
> ------------
> (cd ~/llvm/llvm/; svn up)
> (cd ~/llvm/llvm/tools/clang; svn up)
> (cd ~/llvm/llvm/projects/compiler-rt; svn up)
>
> mkdir -p ~/llvm/llvm-rel-bin
> rm -rf ~/llvm/llvm-rel-bin/*
>
> mkdir -p ~/llvm/llvm-rel-install
> rm -rf ~/llvm/llvm-rel-install/*
>
> cd ~/llvm/llvm-rel-bin
> CC="$(xcrun --find cc)" CXX="$(xcrun --find c++)" cmake
> -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=OFF
> -DCMAKE_INSTALL_PREFIX=~/llvm/llvm-rel-install ../llvm
> make -j16 install
>
>
> Yep, it looks like the driver integration for the darwin toolchain is
> missing too.
>
> The ubsan library should probably be append to the link flags somewhere in
> Toolchains.cpp:DarwinClang::AddLinkRuntimeLibArgs(), but I don't see it
> anywhere.
>
>
> Digging a little further, I found this in ubsan_value.h.
>
> // For now, only support linux. Other platforms should be easy to add, and
> // probably work as-is.
> #if !defined(__linux__)
> #error "UBSan not supported for this platform!"
> #endif
>

Yes, as I can see ubsan runtime library is currently supported only in
CMake build and is built on Linux only.

> -- Jean-Daniel
>
>
>
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
>
> -- Jean-Daniel
>
>
>
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
>


-- 
Alexey Samsonov, MSK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20121016/fd9c00d8/attachment.html>


More information about the cfe-dev mailing list