[llvm-commits] [llvm] r107205 - in /llvm/trunk: bindings/ada/llvm/ docs/ include/llvm-c/ include/llvm/ include/llvm/CodeGen/ include/llvm/MC/ include/llvm/Target/ lib/AsmParser/ lib/Bitcode/Reader/ lib/Bitcode/Writer/ lib/CodeGen/ lib/CodeGen/AsmPrinter/ lib/Linker/ lib/MC/ lib/Target/ lib/Target/CppBackend/ lib/Target/XCore/AsmPrinter/ lib/Transforms/IPO/ lib/VMCore/ tools/llvm-nm/

Chris Lattner clattner at apple.com
Wed Jun 30 21:06:02 PDT 2010


On Jun 30, 2010, at 11:47 AM, Bill Wendling wrote:

>> 
>> Unless someone here can really spell out what these things really
>> mean, without mentioning assembler directives, without mentioning
>> special label naming conventions, without describing it in terms of
>> what gcc does for Objective C, and without citing "this is what the
>> Objective C people say we need", and without excluding any magical
>> semantics, it would be best to avoid confusion.
>> 
> I view these linkages as being like their non-"linker linkage" counterparts, but that the linker will remove them from the final linked image. So, "linker_private" is "private" but the linker will remove it from the final linked image and so on. "linker_private_weak" has no non-"linker linkage" counterpart, but its semantics are a natural progression maybe?

The semantics are clear to me: "lfoo" labels are stripped by the linker, but cause multiple definition cause redefinition errors.  "weak lfoo" labels are stripped by the linker, but multiple definitions get merged.  This doesn't seem that complicated.

-Chris



More information about the llvm-commits mailing list