<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">On Thu, Aug 22, 2013 at 11:39 AM, Steven Newbury <span dir="ltr"><<a href="mailto:steve@snewbury.org.uk" target="_blank">steve@snewbury.org.uk</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Thu, 2013-08-22 at 11:27 +0400, Alexey Samsonov wrote:<br>
> Hi Steven,<br>
><br>
> This looks interesting and raises a number of questions :)<br>
><br>
> 1) Does applying this patch actually bring working sanitizers to x32<br>
> platform?<br>
> That is, after you build the clang, does "clang -fsanitize=whatever foo.c"<br>
> compile/link/run with expected results?<br>
> I doubt that, as there is some platform-specific code in all the<br>
> sanitizers, and many of them heavily depend<br>
> on the address space layout. Porting TSan and MSan to 32-bit address space<br>
> is especially hard, and we don't plan<br>
> to do this anytime soon. I think it makes sense to build only the libraries<br>
> that are expected to work on a given arch.<br>
><br>
</div>I should have made clear this is very much a WIP. I expect to have make<br>
an effort to port compiler-rt, but first I need to be able to generate<br>
elf32_x86_64 objects with Clang.  I confess, my method of porting code<br>
to x32 so far has consisted of trying to build existing code and<br>
modifying what breaks, or disabling features where inapplicable.  I<br>
haven't studied the code well enough to understand and predict where I'm<br>
going to have make modification in advance.  It's worked so far with<br>
most things I've attempted but LLVM/Clang/compiler-rt is an order of<br>
magnitude more complex than anything else I've poked at.  The biggest<br>
success I've had so far with this method is porting of Mozilla<br>
Spidermonkey/js17.<br></blockquote><div><br></div><div>So, IIUC, if you're working on making LLVM/Clang/compiler-rt source tree</div><div>build on x32 host, I suggest your first step should be: disable building compiler-rt</div>
<div>on x32 host :) One of the reasons: in makefile-based build compiler-rt sources</div><div>are compiled with just-built Clang (I honestly don't know if Clang can target x32</div><div>at the moment). Another reason: compiler-rt code is really arch-specific, and even</div>
<div>if it compiles, it wouldn't work.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
> 2) If we're stepping on the path of porting some sanitizers to x32, it<br>
> would be great to<br>
> setup a buildbot, make our tests pass cleanly, and make this bot public to<br>
> catch regressions.<br>
> Do you have plans for that? Running sanitizer test suites also leads us<br>
> to...<br>
><br>
</div>I'm new to llvm/clang, I'm going to have to take guidance from others.<br>
<div class="im"><br>
> 3) Do you plan to add support for building sanitizers on x32 to CMake build<br>
> system? It would<br>
> make sense (and, in fact, I would start from there), as our testsuite can<br>
> be run only in CMake builds.<br>
><br>
</div>I can do so, (locally switch to cmake) I have a little experience with<br>
cmake so I should be able to figure it out.  From my distro point of<br>
view, the plan on Gentoo is to switch to CMake for the LLVM/Clang<br>
ebuild, but it hasn't happened yet.  Perhaps this could be expedited, I<br>
can contact the package maintainer. </blockquote><div><br></div><div>FTR, CMake would probably see that we our host is neither x86_64 nor i386,</div><div>and won't build anything in compiler-rt. If it wouldn't, we should go and fix this.</div>
</div><br>-- <br><div>Alexey Samsonov, MSK</div>
</div></div>