diff options
| author | Rui Ueyama <ruiu@google.com> | 2014-03-07 23:05:10 +0000 |
|---|---|---|
| committer | Rui Ueyama <ruiu@google.com> | 2014-03-07 23:05:10 +0000 |
| commit | c79dd2f80ac78b262944a55a6e8eaee3c62ea7a5 (patch) | |
| tree | e19af8d81e42e51058a87d8d549e6473686f77cf /lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp | |
| parent | 1d6d1c88bd48f8bdcbc12c401d03ec8af65350ec (diff) | |
| download | bcm5719-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.cpp | 4 |
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: |

