<div dir="ltr">I'm just trying to raise this problem again as I got no answer at all.<br>Nobody has any information about support or workarounds for weak private linkage for Mach-O objects? See below.<br><br>Thanks!<br>
<br>Harel Cain<br><br><div class="gmail_quote">On Sun, Dec 5, 2010 at 3:54 PM, Harel Cain <span dir="ltr"><<a href="mailto:harel.cain@gmail.com">harel.cain@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div dir="ltr">Hi all,<br><br>I've been subscribed to this list on-and-off and always found it very helpful.<br><br>I'm facing the problem of compiling a project in Objective C with LLVM in a Darwin environment. There is a certain Objective C protocol that appears in two .m files, and so the corresponding l_OBJC_PROTOCOL and l_OBJC_LABEL_PROTOCOL symbols appear in both .o files.<br>

<br>The problem is that while these symbols are created by gcc 4.2 as *weak* private external, LLVM (both 2.8 and bleeding-edge) produces these symbols as private external, but not weak. Because they are not weak, the linker (ld) shouts at the duplicate symbol. If I semi-manually patch the Mach-O object files to make these symbols weak [following this documentation: <a href="http://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/MachORuntime/Reference/reference.html#//apple_ref/doc/uid/20001298-section" target="_blank">http://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/MachORuntime/Reference/reference.html#//apple_ref/doc/uid/20001298-section</a>], then the problem is solved. <br>

<br>I saw a thread here from June 2010 (<a href="http://lists.cs.uiuc.edu/pipermail/llvmdev/2010-June/032767.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/llvmdev/2010-June/032767.html</a>) about the weak private linkage type, but I'm not sure it's now merged into the trunk (it seems to me it's not) or how to use it exactly. <br>

<br>Is there some command-line flag I can give llvm-gcc or llvmc to make the Objective C protocols appear as weak private symbols in the object files? Any other way to work around this problem of mine?<br><br><br>Many thanks in advance,<br>

<br>Harel Cain<br><br>
</div>
</blockquote></div><br>
</div>