<div dir="ltr">Yes, otherwise it wouldn't work when statically linked.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jan 9, 2013 at 6:47 AM, Devchandra L Meetei <span dir="ltr"><<a href="mailto:dlmeetei@gmail.com" target="_blank">dlmeetei@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Did you got compiler-rt?<br><br><br><div class="gmail_quote"><div><div class="h5">On Wed, Jan 9, 2013 at 3:53 AM, Martin Martin <span dir="ltr"><<a href="mailto:martin@silverliningsystems.com" target="_blank">martin@silverliningsystems.com</a>></span> wrote:<br>

</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr"><div><div><div>When trying to use -fsanitize=undefined with shared libraries, I get:<br>
<br>/usr/bin/ld: a.out: hidden symbol `__ubsan_handle_float_cast_overflow' in /home/clang/build-cmake/bin/../lib/clang/3.2/lib/linux/libclang_rt.ubsan-x86_64.a(ubsan_handlers.cc.o) is referenced by DSO<br>

/usr/bin/ld: final link failed: Bad value<br>clang-3: error: linker command failed with exit code 1 (use -v to see invocation)<br><br></div><div>This is with Clang 3.2 compiled from sources using cmake, on Ubuntu 12.10.<br>


<br></div>I'm compiling my files like this:<br><br>clang++ -fPIC -fsanitize=undefined undefined.cpp -c -o undefined.o<br>clang++ -shared -Wl,-soname,libfoo.so undefined.o -o libfoo.so<br>clang++ -fsanitize=undefined main.cpp -c -o main.o<br>


clang++ -fsanitize=undefined main.o -L. -lfoo<br><br>$ cat undefined.cpp <br>int cast(float x) {<br>    return int(x);<br>}<br><br>$ cat main.cpp <br>#include <cstdlib><br><br>extern int cast(float x);<br><br>int main(int argc, char *argv[])<br>


{<br>    if (argc > 1) {<br>        return cast(atof(argv[1]));<br>    }<br><br>    return 1;<br>}<br><br></div><div>If I don't use shared libraries, but instead like the two .o files (without the -fPIC), it works fine, I get:<br>


<br></div><div>./a.out 1e10<br></div><div><unknown>: fatal error: value 1e+10 is outside the range of representable values of type 'int'<br>Illegal instruction (core dumped)<br><br></div><div><br></div>Any idea what I'm doing wrong?<br>


<br></div>Thanks,<br>Martin<br></div>
<br></div></div>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><br>-- <br>Warm Regards<br>--Dev<br>OpenPegasus Developer<br>"It's Always better to try and fail instead of not doing/trying anything"<br>

</font></span></blockquote></div><br></div>