[llvm-nm] Print 'I' for import table data in COFF
commit37104fff45a7783a64ab121f9aee29da922678dd
authorMartin Storsjo <martin@martin.st>
Fri, 3 Nov 2017 07:18:14 +0000 (3 07:18 +0000)
committerMartin Storsjo <martin@martin.st>
Fri, 3 Nov 2017 07:18:14 +0000 (3 07:18 +0000)
tree922c89878dd1e07d13af6735a04438b2653770f3
parentc43a693efb02155f32e2f61310262082d27f91f3
[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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317300 91177308-0d34-0410-b5e6-96231b3b80d8
test/tools/llvm-nm/X86/importlibrary.test
tools/llvm-nm/llvm-nm.cpp