<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">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">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>