From 7ad72ebc5e1429c3a337f7b51d01c6f292bdacdc Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Tue, 18 Mar 2014 19:37:50 +0000 Subject: [PECOFF] Support yet another new type of weak symbol. COMDAT_SELECT_LARGEST is a COMDAT type that make linker to choose the largest definition from among all of the definition of a symbol. If the size is the same, the choice is arbitrary. Differential Revision: http://llvm-reviews.chandlerc.com/D3011 llvm-svn: 204172 --- lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp') diff --git a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp index b5f0de049d5..c32ca9762d9 100644 --- a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp +++ b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp @@ -250,11 +250,13 @@ DefinedAtom::Merge getMerge(const coff_aux_section_definition *auxsym) { case llvm::COFF::IMAGE_COMDAT_SELECT_ANY: return DefinedAtom::mergeAsWeakAndAddressUsed; case llvm::COFF::IMAGE_COMDAT_SELECT_EXACT_MATCH: + // TODO: This mapping is wrong. Fix it. return DefinedAtom::mergeByContent; case llvm::COFF::IMAGE_COMDAT_SELECT_SAME_SIZE: return DefinedAtom::mergeSameNameAndSize; - case llvm::COFF::IMAGE_COMDAT_SELECT_ASSOCIATIVE: case llvm::COFF::IMAGE_COMDAT_SELECT_LARGEST: + return DefinedAtom::mergeByLargestSection; + case llvm::COFF::IMAGE_COMDAT_SELECT_ASSOCIATIVE: case llvm::COFF::IMAGE_COMDAT_SELECT_NEWEST: // FIXME: These attributes has more complicated semantics than the regular // weak symbol. These are mapped to mergeAsWeakAndAddressUsed for now -- cgit v1.2.3