[cfe-dev] recent change broke -fcatch-undefined-behavior
Sean McBride
sean at rogue-research.com
Mon Oct 15 12:31:16 PDT 2012
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
------------
Thanks,
--
____________________________________________________________
Sean McBride, B. Eng sean at rogue-research.com
Rogue Research www.rogue-research.com
Mac Software Developer Montréal, Québec, Canada
More information about the cfe-dev
mailing list