1 //===- DefinedAtom.cpp ------------------------------------------*- C++ -*-===//
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "llvm/Support/ErrorHandling.h"
11 #include "lld/Core/DefinedAtom.h"
12 #include "lld/Core/File.h"
16 DefinedAtom::ContentPermissions DefinedAtom::permissions() const {
17 // By default base permissions on content type.
18 return permissions(this->contentType());
21 // Utility function for deriving permissions from content type
22 DefinedAtom::ContentPermissions DefinedAtom::permissions(ContentType type) {
26 case typeBranchIsland:
42 case typeCompactUnwindInfo:
43 case typeProcessedUnwindInfo:
44 case typeObjCImageInfo:
45 case typeObjCMethodList:
51 case typeZeroFillFast:
54 case typeLazyDylibPointer:
55 case typeNonLazyPointer:
62 case typeInitializerPtr:
63 case typeTerminatorPtr:
65 case typeObjCClassPtr:
66 case typeObjC2CategoryList:
67 case typeInterposingTuples:
68 case typeTLVInitialData:
69 case typeTLVInitialZeroFill:
70 case typeTLVInitializerPtr:
79 llvm_unreachable("unknown content type");