Lines Matching full:kind
60 object::Archive::Kind NewArchiveMember::detectKindFromObject() const {
79 // If we're adding a bitcode file to the archive, detect the Archive kind
176 static bool isDarwin(object::Archive::Kind Kind) {
177 return Kind == object::Archive::K_DARWIN ||
178 Kind == object::Archive::K_DARWIN64;
181 static bool isAIXBigArchive(object::Archive::Kind Kind) {
182 return Kind == object::Archive::K_AIXBIG;
185 static bool isCOFFArchive(object::Archive::Kind Kind) {
186 return Kind == object::Archive::K_COFF;
189 static bool isBSDLike(object::Archive::Kind Kind) {
190 switch (Kind) {
205 static void print(raw_ostream &Out, object::Archive::Kind Kind, T Val) {
207 isBSDLike(Kind) ? llvm::endianness::little
284 static bool is64BitKind(object::Archive::Kind Kind) {
285 switch (Kind) {
301 StringMap<uint64_t> &MemberNames, object::Archive::Kind Kind,
304 if (isBSDLike(Kind))
320 if (isCOFFArchive(Kind))
376 static void printNBits(raw_ostream &Out, object::Archive::Kind Kind,
378 if (is64BitKind(Kind))
379 print<uint64_t>(Out, Kind, Val);
381 print<uint32_t>(Out, Kind, Val);
384 static uint64_t computeSymbolTableSize(object::Archive::Kind Kind,
390 if (isBSDLike(Kind))
394 if (isBSDLike(Kind))
403 uint32_t Pad = isAIXBigArchive(Kind)
405 : offsetToAlignment(Size, Align(isBSDLike(Kind) ? 8 : 2));
442 static void writeSymbolTableHeader(raw_ostream &Out, object::Archive::Kind Kind,
446 if (isBSDLike(Kind)) {
447 const char *Name = is64BitKind(Kind) ? "__.SYMDEF_64" : "__.SYMDEF";
450 } else if (isAIXBigArchive(Kind)) {
454 const char *Name = is64BitKind(Kind) ? "/SYM64" : "";
459 static uint64_t computeHeadersSize(object::Archive::Kind Kind,
463 uint32_t OffsetSize = is64BitKind(Kind) ? 8 : 4;
465 computeSymbolTableSize(Kind, NumSyms, OffsetSize, SymNamesSize);
469 writeSymbolTableHeader(Tmp, Kind, true, SymtabSize);
486 object::Archive::Kind Kind, function_ref<void(Error)> Warn) {
511 switch (Kind) {
595 static void writeSymbolTable(raw_ostream &Out, object::Archive::Kind Kind,
603 if (StringTable.empty() && !isDarwin(Kind) && !isCOFFArchive(Kind))
606 uint64_t OffsetSize = is64BitKind(Kind) ? 8 : 4;
608 uint64_t Size = computeSymbolTableSize(Kind, NumSyms, OffsetSize,
610 writeSymbolTableHeader(Out, Kind, Deterministic, Size, PrevMemberOffset,
613 if (isBSDLike(Kind))
614 printNBits(Out, Kind, NumSyms * 2 * OffsetSize);
616 printNBits(Out, Kind, NumSyms);
620 if (isAIXBigArchive(Kind)) {
629 if (isBSDLike(Kind))
630 printNBits(Out, Kind, StringOffset);
631 printNBits(Out, Kind, Pos); // member offset
636 if (isBSDLike(Kind))
638 printNBits(Out, Kind, StringTable.size());
645 static void writeSymbolMap(raw_ostream &Out, object::Archive::Kind Kind,
650 writeSymbolTableHeader(Out, Kind, Deterministic, Size, 0);
671 static void writeECSymbols(raw_ostream &Out, object::Archive::Kind Kind,
780 object::Archive::Kind Kind, bool Thin, bool Deterministic,
787 isAIXBigArchive(Kind) ? sizeof(object::BigArchive::FixLenHdr) : 0;
838 bool UniqueTimestamps = Deterministic && isDarwin(Kind);
849 if (NeedSymbols != SymtabWritingMode::NoSymtab || isAIXBigArchive(Kind)) {
852 M.Buf->getMemBufferRef(), Context, Kind, [&](Error Err) {
903 isDarwin(Kind) ? offsetToAlignment(Data.size(), Align(8)) : 0;
929 if (isAIXBigArchive(Kind)) {
960 printMemberHeader(Out, Pos, StringTable, MemberNames, Kind, Thin, *M,
983 if (HasObject && SymNames.tell() == 0 && !isCOFFArchive(Kind))
1034 object::Archive::Kind Kind, bool Deterministic,
1037 assert((!Thin || !isBSDLike(Kind)) && "Only the gnu format has a thin mode");
1049 if (isCOFFArchive(Kind) && (NewMembers.size() > 0xfffe || !ShouldWriteSymtab))
1050 Kind = object::Archive::K_GNU;
1057 StringTable, SymNames, Kind, Thin, Deterministic, WriteSymtab,
1058 isCOFFArchive(Kind) ? &SymMap : nullptr, Context, NewMembers, IsEC, Warn);
1065 if (!StringTableBuf.empty() && !isAIXBigArchive(Kind)) {
1091 if (isAIXBigArchive(Kind) && ShouldWriteSymtab) {
1101 if (ShouldWriteSymtab && !is64BitKind(Kind)) {
1103 HeadersSize = computeHeadersSize(Kind, Data.size(), StringTableSize,
1105 isCOFFArchive(Kind) ? &SymMap : nullptr);
1123 if (Kind == object::Archive::K_DARWIN)
1124 Kind = object::Archive::K_DARWIN64;
1126 Kind = object::Archive::K_GNU64;
1133 else if (isAIXBigArchive(Kind))
1138 if (!isAIXBigArchive(Kind)) {
1142 Kind, Data.size(), StringTableSize, NumSyms, SymNamesBuf.size(),
1143 isCOFFArchive(Kind) ? &SymMap : nullptr);
1144 writeSymbolTable(Out, Kind, Deterministic, Data, SymNamesBuf,
1147 if (isCOFFArchive(Kind))
1148 writeSymbolMap(Out, Kind, Deterministic, Data, SymMap, *HeadersSize);
1156 writeECSymbols(Out, Kind, Deterministic, Data, SymMap);
1279 writeSymbolTable(Out, Kind, Deterministic, Data, SymNamesBuf32,
1289 writeSymbolTable(Out, Kind, Deterministic, Data, SymNamesBuf64,
1306 SymtabWritingMode WriteSymtab, object::Archive::Kind Kind,
1316 if (Error E = writeArchiveToStream(Out, NewMembers, WriteSymtab, Kind,
1340 SymtabWritingMode WriteSymtab, object::Archive::Kind Kind,
1347 writeArchiveToStream(ArchiveStream, NewMembers, WriteSymtab, Kind,