forked from OSchip/llvm-project
[llvm-nm] Generalize ELF symbol types 'N' and 'n'
Reviewed By: grimar, jhenderson Differential Revision: https://reviews.llvm.org/D63588 llvm-svn: 363918
This commit is contained in:
parent
c230eea2f3
commit
7064a437f8
|
@ -1,7 +1,11 @@
|
||||||
# RUN: yaml2obj %s -o %t
|
# RUN: yaml2obj %s -o %t
|
||||||
# RUN: llvm-nm --no-sort %t | FileCheck %s
|
# RUN: llvm-nm --no-sort %t | FileCheck %s
|
||||||
|
|
||||||
# CHECK: n debug_info_main
|
# CHECK: N debug_info_main
|
||||||
|
# CHECK: n readonly_local
|
||||||
|
# CHECK: ? writable_local
|
||||||
|
# CHECK: N readonly_global
|
||||||
|
# CHECK: ? writable_global
|
||||||
|
|
||||||
!ELF
|
!ELF
|
||||||
FileHeader:
|
FileHeader:
|
||||||
|
@ -12,6 +16,22 @@ FileHeader:
|
||||||
Sections:
|
Sections:
|
||||||
- Name: .debug_info
|
- Name: .debug_info
|
||||||
Type: SHT_PROGBITS
|
Type: SHT_PROGBITS
|
||||||
|
- Name: .readonly
|
||||||
|
Type: SHT_PROGBITS
|
||||||
|
- Name: .writable
|
||||||
|
Type: SHT_PROGBITS
|
||||||
|
Flags: [SHF_WRITE]
|
||||||
Symbols:
|
Symbols:
|
||||||
- Name: debug_info_main
|
- Name: debug_info_main
|
||||||
Section: .debug_info
|
Section: .debug_info
|
||||||
|
- Name: readonly_local
|
||||||
|
Section: .readonly
|
||||||
|
- Name: writable_local
|
||||||
|
Section: .writable
|
||||||
|
|
||||||
|
- Name: readonly_global
|
||||||
|
Binding: STB_GLOBAL
|
||||||
|
Section: .readonly
|
||||||
|
- Name: writable_global
|
||||||
|
Binding: STB_GLOBAL
|
||||||
|
Section: .writable
|
||||||
|
|
|
@ -907,22 +907,17 @@ static char getSymbolNMTypeChar(ELFObjectFileBase &Obj,
|
||||||
return 'b';
|
return 'b';
|
||||||
if (Flags & ELF::SHF_ALLOC)
|
if (Flags & ELF::SHF_ALLOC)
|
||||||
return Flags & ELF::SHF_WRITE ? 'd' : 'r';
|
return Flags & ELF::SHF_WRITE ? 'd' : 'r';
|
||||||
}
|
|
||||||
|
|
||||||
if (SymI->getELFType() == ELF::STT_SECTION) {
|
StringRef SecName;
|
||||||
Expected<StringRef> Name = SymI->getName();
|
if (SecI->getName(SecName))
|
||||||
if (!Name) {
|
|
||||||
consumeError(Name.takeError());
|
|
||||||
return '?';
|
return '?';
|
||||||
}
|
if (SecName.startswith(".debug"))
|
||||||
return StringSwitch<char>(*Name)
|
return 'N';
|
||||||
.StartsWith(".debug", 'N')
|
if (!(Flags & ELF::SHF_WRITE))
|
||||||
.StartsWith(".note", 'n')
|
return 'n';
|
||||||
.StartsWith(".comment", 'n')
|
|
||||||
.Default('?');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 'n';
|
return '?';
|
||||||
}
|
}
|
||||||
|
|
||||||
static char getSymbolNMTypeChar(COFFObjectFile &Obj, symbol_iterator I) {
|
static char getSymbolNMTypeChar(COFFObjectFile &Obj, symbol_iterator I) {
|
||||||
|
|
Loading…
Reference in New Issue