<div dir="ltr">Sorry about that. I'm working on solving the problem. Basically the test was causing out of memory errors on various systems. I think restricting to 64-bit linux bots should solve the problem. Unfortunately I need to add some features to llvm-lit to make that work.</div><br><div class="gmail_quote"><div dir="ltr">On Fri, Oct 27, 2017 at 5:04 PM Rafael Avila de Espindola <<a href="mailto:rafael.espindola@gmail.com">rafael.espindola@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">It is common practice to say in the commit message why something is<br>
being reverted.<br>
<br>
Cheers,<br>
Rafael<br>
<br>
Jake Ehrlich via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> writes:<br>
<br>
> Author: jakehehrlich<br>
> Date: Fri Oct 27 16:39:31 2017<br>
> New Revision: 316813<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=316813&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=316813&view=rev</a><br>
> Log:<br>
> Revert "Add support for writing 64-bit symbol tables for archives when offsets become too large for 32-bit"<br>
><br>
> This reverts commit r316805.<br>
><br>
> Removed:<br>
>     llvm/trunk/test/Object/archive-SYM64-write.test<br>
> Modified:<br>
>     llvm/trunk/lib/Object/ArchiveWriter.cpp<br>
><br>
> Modified: llvm/trunk/lib/Object/ArchiveWriter.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/ArchiveWriter.cpp?rev=316813&r1=316812&r2=316813&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/ArchiveWriter.cpp?rev=316813&r1=316812&r2=316813&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Object/ArchiveWriter.cpp (original)<br>
> +++ llvm/trunk/lib/Object/ArchiveWriter.cpp Fri Oct 27 16:39:31 2017<br>
> @@ -122,11 +122,11 @@ static void printWithSpacePadding(raw_os<br>
>  static bool isBSDLike(object::Archive::Kind Kind) {<br>
>    switch (Kind) {<br>
>    case object::Archive::K_GNU:<br>
> -  case object::Archive::K_GNU64:<br>
>      return false;<br>
>    case object::Archive::K_BSD:<br>
>    case object::Archive::K_DARWIN:<br>
>      return true;<br>
> +  case object::Archive::K_GNU64:<br>
>    case object::Archive::K_DARWIN64:<br>
>    case object::Archive::K_COFF:<br>
>      break;<br>
> @@ -134,8 +134,8 @@ static bool isBSDLike(object::Archive::K<br>
>    llvm_unreachable("not supported for writting");<br>
>  }<br>
><br>
> -template <class T><br>
> -static void print(raw_ostream &Out, object::Archive::Kind Kind, T Val) {<br>
> +static void print32(raw_ostream &Out, object::Archive::Kind Kind,<br>
> +                    uint32_t Val) {<br>
>    if (isBSDLike(Kind))<br>
>      support::endian::Writer<support::little>(Out).write(Val);<br>
>    else<br>
> @@ -216,20 +216,6 @@ static std::string computeRelativePath(S<br>
>    return Relative.str();<br>
>  }<br>
><br>
> -static bool is64BitKind(object::Archive::Kind Kind) {<br>
> -  switch (Kind) {<br>
> -  case object::Archive::K_GNU:<br>
> -  case object::Archive::K_BSD:<br>
> -  case object::Archive::K_DARWIN:<br>
> -  case object::Archive::K_COFF:<br>
> -    return false;<br>
> -  case object::Archive::K_DARWIN64:<br>
> -  case object::Archive::K_GNU64:<br>
> -    return true;<br>
> -  }<br>
> -  llvm_unreachable("not supported for writting");<br>
> -}<br>
> -<br>
>  static void addToStringTable(raw_ostream &Out, StringRef ArcName,<br>
>                               const NewArchiveMember &M, bool Thin) {<br>
>    StringRef ID = M.Buf->getBufferIdentifier();<br>
> @@ -302,14 +288,6 @@ static bool isArchiveSymbol(const object<br>
>    return true;<br>
>  }<br>
><br>
> -static void printNBits(raw_ostream &Out, object::Archive::Kind Kind,<br>
> -                       uint64_t Val) {<br>
> -  if (is64BitKind(Kind))<br>
> -    print<uint64_t>(Out, Kind, Val);<br>
> -  else<br>
> -    print<uint32_t>(Out, Kind, Val);<br>
> -}<br>
> -<br>
>  static void writeSymbolTable(raw_ostream &Out, object::Archive::Kind Kind,<br>
>                               bool Deterministic, ArrayRef<MemberData> Members,<br>
>                               StringRef StringTable) {<br>
> @@ -321,11 +299,9 @@ static void writeSymbolTable(raw_ostream<br>
>      NumSyms += M.Symbols.size();<br>
><br>
>    unsigned Size = 0;<br>
> -  Size += is64BitKind(Kind) ? 8 : 4; // Number of entries<br>
> +  Size += 4; // Number of entries<br>
>    if (isBSDLike(Kind))<br>
>      Size += NumSyms * 8; // Table<br>
> -  else if (is64BitKind(Kind))<br>
> -    Size += NumSyms * 8; // Table<br>
>    else<br>
>      Size += NumSyms * 4; // Table<br>
>    if (isBSDLike(Kind))<br>
> @@ -342,30 +318,27 @@ static void writeSymbolTable(raw_ostream<br>
>    if (isBSDLike(Kind))<br>
>      printBSDMemberHeader(Out, Out.tell(), "__.SYMDEF", now(Deterministic), 0, 0,<br>
>                           0, Size);<br>
> -  else if (is64BitKind(Kind))<br>
> -    printGNUSmallMemberHeader(Out, "/SYM64", now(Deterministic), 0, 0, 0, Size);<br>
>    else<br>
>      printGNUSmallMemberHeader(Out, "", now(Deterministic), 0, 0, 0, Size);<br>
><br>
>    uint64_t Pos = Out.tell() + Size;<br>
><br>
>    if (isBSDLike(Kind))<br>
> -    print<uint32_t>(Out, Kind, NumSyms * 8);<br>
> +    print32(Out, Kind, NumSyms * 8);<br>
>    else<br>
> -    printNBits(Out, Kind, NumSyms);<br>
> +    print32(Out, Kind, NumSyms);<br>
><br>
>    for (const MemberData &M : Members) {<br>
>      for (unsigned StringOffset : M.Symbols) {<br>
>        if (isBSDLike(Kind))<br>
> -        print<uint32_t>(Out, Kind, StringOffset);<br>
> -      printNBits(Out, Kind, Pos); // member offset<br>
> +        print32(Out, Kind, StringOffset);<br>
> +      print32(Out, Kind, Pos); // member offset<br>
>      }<br>
>      Pos += M.Header.size() + M.Data.size() + M.Padding.size();<br>
>    }<br>
><br>
>    if (isBSDLike(Kind))<br>
> -    // byte count of the string table<br>
> -    print<uint32_t>(Out, Kind, StringTable.size());<br>
> +    print32(Out, Kind, StringTable.size()); // byte count of the string table<br>
>    Out << StringTable;<br>
><br>
>    while (Pad--)<br>
> @@ -469,25 +442,6 @@ Error llvm::writeArchive(StringRef ArcNa<br>
>    if (!StringTableBuf.empty())<br>
>      Data.insert(Data.begin(), computeStringTable(StringTableBuf));<br>
><br>
> -  // We would like to detect if we need to switch to a 64-bit symbol table.<br>
> -  if (WriteSymtab) {<br>
> -    uint64_t MaxOffset = 0;<br>
> -    uint64_t LastOffset = MaxOffset;<br>
> -    for (const auto& M : Data) {<br>
> -      // Record the start of the member's offset<br>
> -      LastOffset = MaxOffset;<br>
> -      // Account for the size of each part associated with the member.<br>
> -      MaxOffset += M.Header.size() + M.Data.size() + M.Padding.size();<br>
> -      // We assume 32-bit symbols to see if 32-bit symbols are possible or not.<br>
> -      MaxOffset += M.Symbols.size() * 4;<br>
> -    }<br>
> -    // If LastOffset isn't going to fit in a 32-bit varible we need to switch<br>
> -    // to 64-bit. Note that the file can be larger than 4GB as long as the last<br>
> -    // member starts before the 4GB offset.<br>
> -    if (LastOffset >> 32 != 0)<br>
> -      Kind = object::Archive::K_GNU64;<br>
> -  }<br>
> -<br>
>    SmallString<128> TmpArchive;<br>
>    int TmpArchiveFD;<br>
>    if (auto EC = sys::fs::createUniqueFile(ArcName + ".temp-archive-%%%%%%%.a",<br>
><br>
> Removed: llvm/trunk/test/Object/archive-SYM64-write.test<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/archive-SYM64-write.test?rev=316812&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/archive-SYM64-write.test?rev=316812&view=auto</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Object/archive-SYM64-write.test (original)<br>
> +++ llvm/trunk/test/Object/archive-SYM64-write.test (removed)<br>
> @@ -1,31 +0,0 @@<br>
> -# RUN: yaml2obj %s > %t<br>
> -# RUN: rm -f %t.lib<br>
> -# RUN: cp %t %t2<br>
> -# RUN: llvm-ar cr %t.lib %t %t2 %p/Inputs/trivial-object-test.elf-x86-64<br>
> -# RUN: llvm-nm --print-armap %t.lib | FileCheck %s<br>
> -<br>
> -!ELF<br>
> -FileHeader:<br>
> -  Class:           ELFCLASS64<br>
> -  Data:            ELFDATA2LSB<br>
> -  Type:            ET_EXEC<br>
> -  Machine:         EM_X86_64<br>
> -Sections:<br>
> -  - Name:            .data<br>
> -    Type:            SHT_PROGBITS<br>
> -    Flags:           [ SHF_ALLOC ]<br>
> -    AddressAlign:    0x0000000000000001<br>
> -    Content:         "00"<br>
> -    Size:            <a href="tel:(214)%20748-3648" value="+12147483648" target="_blank">2147483648</a><br>
> -<br>
> -# CHECK:      Archive map<br>
> -# CHECK-NEXT: main in trivial-object-test.elf-x86-64<br>
> -<br>
> -# CHECK:    archive-SYM64-write.test.tmp:<br>
> -<br>
> -# CHECK:    archive-SYM64-write.test.tmp2:<br>
> -<br>
> -# CHECK:    trivial-object-test.elf-x86-64:<br>
> -# CHECK-NEXT:                     U SomeOtherFunction<br>
> -# CHECK-NEXT:    0000000000000000 T main<br>
> -# CHECK-NEXT:                     U puts<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>