mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-27 13:30:05 +00:00
Find the symbol table on archives created on OS X.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186041 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6911911e61
commit
a739759fca
@ -236,9 +236,9 @@ Archive::Archive(MemoryBuffer *source, error_code &ec)
|
||||
// Second member : // (may exist, if it exists, points to the string table)
|
||||
// Note : The string table is used if the filename exceeds 15 characters
|
||||
// BSD archive format
|
||||
// First member : __.SYMDEF (points to the symbol table)
|
||||
// There is no string table, if the filename exceeds 15 characters or has a
|
||||
// embedded space, the filename has #1/<size>, The size represents the size
|
||||
// First member : __.SYMDEF or "__.SYMDEF SORTED" (the symbol table)
|
||||
// There is no string table, if the filename exceeds 15 characters or has a
|
||||
// embedded space, the filename has #1/<size>, The size represents the size
|
||||
// of the filename that needs to be read after the archive header
|
||||
// COFF archive format
|
||||
// First member : /
|
||||
@ -256,6 +256,17 @@ Archive::Archive(MemoryBuffer *source, error_code &ec)
|
||||
return;
|
||||
}
|
||||
|
||||
if (Name.startswith("#1/")) {
|
||||
Format = K_BSD;
|
||||
// We know this is BSD, so getName will work since there is no string table.
|
||||
ec = i->getName(Name);
|
||||
if (ec)
|
||||
return;
|
||||
if (Name == StringRef("__.SYMDEF SORTED\0\0\0", 20))
|
||||
SymbolTable = i;
|
||||
return;
|
||||
}
|
||||
|
||||
if (Name == "/") {
|
||||
SymbolTable = i;
|
||||
|
||||
|
@ -30,3 +30,10 @@ RUN: llvm-nm %p/Inputs/archive-test.a-gnu-minimal
|
||||
|
||||
And don't crash when asked to print a non existing symtab.
|
||||
RUN: llvm-nm -s %p/Inputs/archive-test.a-gnu-minimal
|
||||
|
||||
|
||||
Test that we at least find the symbol table on an OS X archive. Please update
|
||||
this when we are actually able to parse it.
|
||||
RUN: not llvm-nm -s %p/Inputs/MacOSX.a 2>&1 | FileCheck %s -check-prefix OSX
|
||||
|
||||
OSX: BSD archive format is not supported
|
||||
|
Loading…
Reference in New Issue
Block a user