<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Nov 22, 2016 at 9:33 AM, Lowekamp, Bradley (NIH/NLM/LHC) [C] <span dir="ltr"><<a href="mailto:blowekamp@mail.nih.gov" target="_blank">blowekamp@mail.nih.gov</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
There appears to be ways to pass the linker list of symbols or REGEX of symbols to export (-export-symbols and -export-symbols-regex). Perhaps instead of monkeying too much with the ITK casting and class export specification, maybe a regex for the RTTI or a generated list of symbols could be generated to export for the problematic configuration for WrapITK?<br></blockquote><div><br></div><div>These are libtool options, and they aren't supported by the OS X version of libtool. There is a related `-exported_symbols_list` ld option, but the Apple documentation warns that the export list cannot positively override the symbol visibility set by the compiler:</div><div><br></div><div><a href="https://developer.apple.com/library/content/technotes/tn2185/_index.html#//apple_ref/doc/uid/DTS10004200-CH1-SUBSECTION5" target="_blank">https://developer.apple.com/<wbr>library/content/technotes/<wbr>tn2185/_index.html#//apple_<wbr>ref/doc/uid/DTS10004200-CH1-<wbr>SUBSECTION5</a><br></div><div><br></div><div>On a related note, I looked at the implementation of `-fvisibility-ms-compat` in Clang, and it turns out there is a corresponding `__attribute__(type_<wbr>visibility(...))` annotation which could be used on class declarations. See:</div><div><br></div><div><a href="http://stackoverflow.com/questions/28437772/what-does-clangs-type-visibility-attribute-do-and-when-should-one-use-it" target="_blank">http://stackoverflow.com/<wbr>questions/28437772/what-does-<wbr>clangs-type-visibility-<wbr>attribute-do-and-when-should-<wbr>one-use-it</a> </div><div><br></div><div>But the annotation is not supported by GCC, so `visibility-ms-compat` is probably still a better option to allow compatibility with both OSX and Linux.</div><div><br></div><div>Best,</div><div>Isaiah</div><div><br></div><div><br></div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Just another thought.<br>
Brad<br>
<div class="m_-276421277917730036gmail-HOEnZb"><div class="m_-276421277917730036gmail-h5"><br>
> On Nov 15, 2016, at 10:17 AM, Lowekamp, Bradley (NIH/NLM/LHC) [C] <<a href="mailto:blowekamp@mail.nih.gov" target="_blank">blowekamp@mail.nih.gov</a>> wrote:<br>
><br>
><br>
>> On Nov 14, 2016, at 6:18 PM, Matt McCormick <<a href="mailto:matt.mccormick@kitware.com" target="_blank">matt.mccormick@kitware.com</a>> wrote:<br>
>><br>
>> On Mon, Nov 14, 2016 at 2:18 PM, Lowekamp, Bradley (NIH/NLM/LHC) [C]<br>
>> <<a href="mailto:blowekamp@mail.nih.gov" target="_blank">blowekamp@mail.nih.gov</a>> wrote:<br>
>>> Matt,<br>
>>><br>
>>> I believe that GCC 4.1 also had a very similar problem to what is occurring in with Apple Clang now.<br>
>><br>
>> Thanks to the GCC version dashboard builds that you maintain, we<br>
>> should be able to see if other GCC's have that issue, too :-).<br>
>><br>
><br>
> Based on the good information Isaiah has referenced: It may be that the prior gcc 4.1 behavior was due to the version of libstdc++ that was distributed with gcc 4.1, so with the dashboard system using gcc4.1 with libstdc++.so.6.0.19 at runtime may have different behavior.<br>
><br>
>><br>
>>> It’s interesting to note that Slicer CLI interface does not contain ITK templated objects. Does Slicer use ITK objects any where in it’s public API’s?<br>
>><br>
>> Note that this issue becomes predominantly problematic when ITK<br>
>> templated objects are not in the ABI but used internally (as in the<br>
>> test case).<br>
>><br>
>><br>
>> Thanks,<br>
>> Matt<br>
><br>
> I’m not sure what the right term is. Yes, in the test case the templated object is not explicitly in the ABI/API of the library, but the method exposes private templated objects by producing objects which are intended to be “cast" to the templated object. So by documentation and behavior instances of private templated object are exposed in the API of the test case?<br>
><br>
> So my point? I think that developing a clean interface without excessive multiple instances as well as not exposing private instance is important and should be the first approach. If there are places remaining in Slicer or ITK which “expose” private symbols I would like to help to directly address them.<br>
><br>
> I also acknowledge that some interfaces were not designed with this in mind and are limited in their ability to meet these best practices and therefor need the “SafeDownCast” work around.<br>
><br>
> I think I have gone past my 2 cents on this issue.<br>
><br>
> HTH,<br>
> Brad<br>
> ______________________________<wbr>_________________<br>
> slicer-devel mailing list<br>
> <a href="mailto:slicer-devel@bwh.harvard.edu" target="_blank">slicer-devel@bwh.harvard.edu</a><br>
> <a href="http://massmail.spl.harvard.edu/mailman/listinfo/slicer-devel" rel="noreferrer" target="_blank">http://massmail.spl.harvard.ed<wbr>u/mailman/listinfo/slicer-deve<wbr>l</a><br>
> To unsubscribe: send email to <a href="mailto:slicer-devel-request@bwh.harvard.edu" target="_blank">slicer-devel-request@bwh.harva<wbr>rd.edu</a> with unsubscribe as the subject<br>
> <a href="http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Developers/FAQ" rel="noreferrer" target="_blank">http://www.slicer.org/slicerWi<wbr>ki/index.php/Documentation/<wbr>Nightly/Developers/FAQ</a><br>
<br>
</div></div><div class="m_-276421277917730036gmail-HOEnZb"><div class="m_-276421277917730036gmail-h5">______________________________<wbr>_________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensou<wbr>rce/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://kitware.com/products/protraining.php" rel="noreferrer" target="_blank">http://kitware.com/products/pr<wbr>otraining.php</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" rel="noreferrer" target="_blank">http://www.itk.org/Wiki/ITK_FA<wbr>Q</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/insight-developers" rel="noreferrer" target="_blank">http://public.kitware.com/mail<wbr>man/listinfo/insight-developer<wbr>s</a><br>
</div></div></blockquote></div><br></div></div>