forked from OSchip/llvm-project
Fix llvm-nm to mach OS X's nm on some tests.
There is still a long way to go for llvm-nm, but at least we now match nm's letter output in the cases we test for. llvm-svn: 193912
This commit is contained in:
parent
329211bbb7
commit
a135632af0
|
@ -594,24 +594,35 @@ error_code MachOObjectFile::getSymbolType(DataRefImpl Symb,
|
|||
error_code MachOObjectFile::getSymbolNMTypeChar(DataRefImpl Symb,
|
||||
char &Res) const {
|
||||
nlist_base Entry = getSymbolTableEntryBase(this, Symb);
|
||||
uint8_t Type = Entry.n_type;
|
||||
uint16_t Flags = Entry.n_desc;
|
||||
uint8_t NType = Entry.n_type;
|
||||
|
||||
char Char;
|
||||
switch (Type & MachO::N_TYPE) {
|
||||
switch (NType & MachO::N_TYPE) {
|
||||
case MachO::N_UNDF:
|
||||
Char = 'u';
|
||||
break;
|
||||
case MachO::N_ABS:
|
||||
case MachO::N_SECT:
|
||||
Char = 's';
|
||||
break;
|
||||
case MachO::N_SECT: {
|
||||
section_iterator Sec = end_sections();
|
||||
getSymbolSection(Symb, Sec);
|
||||
DataRefImpl Ref = Sec->getRawDataRefImpl();
|
||||
StringRef SectionName;
|
||||
getSectionName(Ref, SectionName);
|
||||
StringRef SegmentName = getSectionFinalSegmentName(Ref);
|
||||
if (SegmentName == "__TEXT" && SectionName == "__text")
|
||||
Char = 't';
|
||||
else
|
||||
Char = 's';
|
||||
}
|
||||
break;
|
||||
default:
|
||||
Char = '?';
|
||||
break;
|
||||
}
|
||||
|
||||
if (Flags & (MachO::N_EXT | MachO::N_PEXT))
|
||||
if (NType & (MachO::N_EXT | MachO::N_PEXT))
|
||||
Char = toupper(static_cast<unsigned char>(Char));
|
||||
Res = Char;
|
||||
return object_error::success;
|
||||
|
@ -630,7 +641,7 @@ error_code MachOObjectFile::getSymbolFlags(DataRefImpl DRI,
|
|||
if ((MachOType & MachO::N_TYPE) == MachO::N_UNDF)
|
||||
Result |= SymbolRef::SF_Undefined;
|
||||
|
||||
if (MachOFlags & MachO::N_STAB)
|
||||
if (MachOType & MachO::N_STAB)
|
||||
Result |= SymbolRef::SF_FormatSpecific;
|
||||
|
||||
if (MachOType & MachO::N_EXT) {
|
||||
|
|
Binary file not shown.
|
@ -25,10 +25,10 @@ ELF: U puts
|
|||
|
||||
|
||||
macho: 00000000 U _SomeOtherFunction
|
||||
macho: 00000000 s _main
|
||||
macho: 00000000 T _main
|
||||
macho: 00000000 U _puts
|
||||
|
||||
macho64: 00000028 s L_.str
|
||||
macho64: 00000000 u _SomeOtherFunction
|
||||
macho64: 00000000 s _main
|
||||
macho64: 00000000 u _puts
|
||||
macho64: 00000000 U _SomeOtherFunction
|
||||
macho64: 00000000 T _main
|
||||
macho64: 00000000 U _puts
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
RUN: llvm-nm %p/Inputs/weak-global-symbol.macho-i386 | FileCheck %s
|
||||
|
||||
CHECK: 00000000 S _a
|
Loading…
Reference in New Issue