diff --git a/lib/Object/Archive.cpp b/lib/Object/Archive.cpp index 070fe812eec..d169dbee46e 100644 --- a/lib/Object/Archive.cpp +++ b/lib/Object/Archive.cpp @@ -240,7 +240,7 @@ Archive::Archive(MemoryBufferRef Source, std::error_code &ec) if (ec) return; Name = NameOrErr.get(); - if (Name == "__.SYMDEF SORTED") { + if (Name == "__.SYMDEF SORTED" || Name == "__.SYMDEF") { SymbolTable = i; ++i; } diff --git a/test/Object/Inputs/macho-archive-unsorted-x86_64.a b/test/Object/Inputs/macho-archive-unsorted-x86_64.a new file mode 100644 index 00000000000..6a2b570f160 Binary files /dev/null and b/test/Object/Inputs/macho-archive-unsorted-x86_64.a differ diff --git a/test/Object/archive-symtab.test b/test/Object/archive-symtab.test index 0899828bdfb..01f17bcc8b6 100644 --- a/test/Object/archive-symtab.test +++ b/test/Object/archive-symtab.test @@ -61,6 +61,7 @@ RUN: llvm-ranlib %t.a RUN: llvm-nm -M %t.a | FileCheck %s RUN: llvm-nm -M %p/Inputs/macho-archive-x86_64.a | FileCheck %s --check-prefix=BSD-MachO +RUN: llvm-nm -M %p/Inputs/macho-archive-unsorted-x86_64.a | FileCheck %s --check-prefix=BSD-MachO BSD-MachO: Archive map BSD-MachO: _bar in bar.o