summaryrefslogtreecommitdiffstats
path: root/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2014-03-07 23:05:10 +0000
committerRui Ueyama <ruiu@google.com>2014-03-07 23:05:10 +0000
commitc79dd2f80ac78b262944a55a6e8eaee3c62ea7a5 (patch)
treee19af8d81e42e51058a87d8d549e6473686f77cf /lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
parent1d6d1c88bd48f8bdcbc12c401d03ec8af65350ec (diff)
downloadbcm5719-llvm-c79dd2f80ac78b262944a55a6e8eaee3c62ea7a5.tar.gz
bcm5719-llvm-c79dd2f80ac78b262944a55a6e8eaee3c62ea7a5.zip
[PECOFF] Support a new type of weak symbol.
Summary: COMDAT_SELECT_SAME_SIZE is a COMDAT type that I presume exist only in COFF. The semantics of the type is that linker should merge such COMDAT sections if their sizes are the same. Otherwise it's an error. Reviewers: Bigcheese, shankarke, kledzik CC: llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D2996 llvm-svn: 203308
Diffstat (limited to 'lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp')
-rw-r--r--lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
index 4fb045664b4..54acbc829bf 100644
--- a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
+++ b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
@@ -249,8 +249,10 @@ DefinedAtom::Merge getMerge(const coff_aux_section_definition *auxsym) {
return DefinedAtom::mergeNo;
case llvm::COFF::IMAGE_COMDAT_SELECT_ANY:
return DefinedAtom::mergeAsWeakAndAddressUsed;
- case llvm::COFF::IMAGE_COMDAT_SELECT_SAME_SIZE:
case llvm::COFF::IMAGE_COMDAT_SELECT_EXACT_MATCH:
+ 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:
case llvm::COFF::IMAGE_COMDAT_SELECT_NEWEST:
OpenPOWER on IntegriCloud