<div dir="ltr"><div class="gmail_extra">ENOPATCH?</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 13, 2013 at 12:58 AM, G M <span dir="ltr"><<a href="mailto:gmisocpp@gmail.com" target="_blank">gmisocpp@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>Hi Everyone (particularly Howard and Reid (rnk) and any windows experts out there)</div>
<div> </div><div>I'm trying to hack some more support for libcxx on Windows (for any compilers) but cl.exe/visual studio in this case:</div>
<div> </div><div>One task is I'm trying to find out what the Windows equivalent is to the gcc/clang weak attribute.</div><div>(would address sanitizer or other llvm related code bases benefit from any solution that can be found here?).</div>

<div> </div><div>Take code like this, from libcxx:</div><div> </div><div>__attribute__((__weak__, __visibility__("default"))) void * operator new(std::size_t size) { ... }</div></div></blockquote><div> </div><div>
Maybe Rui knows more about how Microsoft does this.  He had to implement some weak symbol fallback stuff in lld to link the Visual C++ runtime.  I wonder if operator new was the feature that required this functionality.</div>
<div>  </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>While on the topic, it'd be nice to find the correct solution to this problem too:  </div>
<font color="#1e1e1e" face="Consolas" size="1"><font color="#1e1e1e" face="Consolas" size="1"><font color="#1e1e1e" face="Consolas" size="1"><p>
2>c:/libcxx/include\utility(597): warning C4141: 'inline' : used more than once</p></font></font></font><div>It's a warning but it would be nice to find the correct formulation of macro's that will solve that warning too.</div>

<div>When libcxx is compiled with cl.exe this warning appears 1300 times for various offending lines </div><div> </div><div>The attached patch demonstrates the first proposal, using libcxx's new.cpp as an example. It at least removes some of the compile errors coming from cl.exe, but it may still not be right even if it compiles.</div>
</div></blockquote><div><br></div><div>Timur had to solve this for asan, and he did this in compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h:</div><div><br></div><div>#if defined(_MSC_VER)</div><div># define ALWAYS_INLINE __forceinline</div>
<div>...</div><div>#else  // _MSC_VER</div><div># define ALWAYS_INLINE inline __attribute__((always_inline))</div><div>...</div><div>#endif</div><div><br></div><div>libc++ should do the same.  gcc requires you to use inline in combination with always_inline, while MSVC thinks that inline is redundant with __forceinline.</div>
</div></div></div>