[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