mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
[llvm-nm] Print 'I' for import table data in COFF
The character gets uppercased into 'I' when it's a global symbol. In GNU binutils, nm prints 'I' for symbols classified by bfd_is_ind_section - which probably isn't exactly/only import tables. When building for win32, (some incarnations of?) libtool has got rules that try to inspect linked libraries, and in order to be sure that it is linking to a DLL import library as opposed to a static library, it expects to find the string " I " in the output of $NM when run on such an import library. GNU binutils nm also flags all of the .idata$X chunks as 'i' (while this patch only makes it set on .idata$2 and .idata$6) and also flags __imp__function as 'I'. Differential Revision: https://reviews.llvm.org/D39540 llvm-svn: 317300
This commit is contained in:
parent
72f033a4dc
commit
cb4d10b029
@ -1,5 +1,7 @@
|
||||
# RUN: llvm-nm -B %S/Inputs/example.lib | FileCheck --match-full-lines %s
|
||||
|
||||
CHECK: 00000000 I __IMPORT_DESCRIPTOR_example
|
||||
CHECK: 00000000 I __NULL_IMPORT_DESCRIPTOR
|
||||
CHECK: 00000000 R __imp__constant
|
||||
CHECK: 00000000 R _constant
|
||||
CHECK: 00000000 D __imp__data
|
||||
|
@ -946,6 +946,10 @@ static char getSymbolNMTypeChar(COFFObjectFile &Obj, symbol_iterator I) {
|
||||
section_iterator SecI = *SecIOrErr;
|
||||
const coff_section *Section = Obj.getCOFFSection(*SecI);
|
||||
Characteristics = Section->Characteristics;
|
||||
StringRef SectionName;
|
||||
Obj.getSectionName(Section, SectionName);
|
||||
if (SectionName.startswith(".idata"))
|
||||
return 'i';
|
||||
}
|
||||
|
||||
switch (Symb.getSectionNumber()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user