OSDN Git Service

Implement the "linker_private_weak" linkage type. This will be used for
authorBill Wendling <isanbard@gmail.com>
Thu, 1 Jul 2010 21:55:59 +0000 (21:55 +0000)
committerBill Wendling <isanbard@gmail.com>
Thu, 1 Jul 2010 21:55:59 +0000 (21:55 +0000)
commit5e721d768254a920b78b9129d79a84c0163cb3f4
tree53384abb48251190c5f1398defc48763367a7355
parent0f66d4be04787906fb3a40ff572bc8c16a41bb96
Implement the "linker_private_weak" linkage type. This will be used for
Objective-C metadata types which should be marked as "weak", but which the
linker will remove upon final linkage. However, this linkage isn't specific to
Objective-C.

For example, the "objc_msgSend_fixup_alloc" symbol is defined like this:

      .globl l_objc_msgSend_fixup_alloc
      .weak_definition l_objc_msgSend_fixup_alloc
      .section __DATA, __objc_msgrefs, coalesced
      .align 3
l_objc_msgSend_fixup_alloc:
       .quad   _objc_msgSend_fixup
       .quad   L_OBJC_METH_VAR_NAME_1

This is different from the "linker_private" linkage type, because it can't have
the metadata defined with ".weak_definition".

Currently only supported on Darwin platforms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107433 91177308-0d34-0410-b5e6-96231b3b80d8
21 files changed:
bindings/ada/llvm/llvm.ads
docs/LangRef.html
include/llvm-c/Core.h
include/llvm/GlobalValue.h
lib/AsmParser/LLLexer.cpp
lib/AsmParser/LLParser.cpp
lib/AsmParser/LLToken.h
lib/Bitcode/Reader/BitcodeReader.cpp
lib/Bitcode/Writer/BitcodeWriter.cpp
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/Target/CppBackend/CPPBackend.cpp
lib/Target/Mangler.cpp
lib/Target/XCore/AsmPrinter/XCoreAsmPrinter.cpp
lib/Transforms/IPO/MergeFunctions.cpp
lib/VMCore/AsmWriter.cpp
lib/VMCore/Core.cpp
test/CodeGen/ARM/2009-08-23-linkerprivate.ll
test/CodeGen/PowerPC/2009-08-23-linkerprivate.ll
test/CodeGen/X86/2009-08-23-linkerprivate.ll
test/Feature/linker_private_linkages.ll [new file with mode: 0644]
tools/llvm-nm/llvm-nm.cpp