From df4f50c81f7e7c433dd6da3ff2511430bd566ba0 Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Fri, 28 Apr 2017 04:29:43 +0000 Subject: [PATCH] COFF Import: expose both symbols COFF Import libraries which use the obsolete CONSTANT export are supposed to get two symbols, one with the `_imp_` prefix and one without. Ensure that we expose both for iteration. This is necessary to fix the librarian with COFF CONSTANT exports. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301614 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Object/COFFImportFile.h | 6 +++--- test/tools/llvm-readobj/Inputs/const-import.lib | Bin 0 -> 1200 bytes test/tools/llvm-readobj/coff-const-import.test | 7 +++++++ 3 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 test/tools/llvm-readobj/Inputs/const-import.lib create mode 100644 test/tools/llvm-readobj/coff-const-import.test diff --git a/include/llvm/Object/COFFImportFile.h b/include/llvm/Object/COFFImportFile.h index 4192fe7e5c9..78d9d679acd 100644 --- a/include/llvm/Object/COFFImportFile.h +++ b/include/llvm/Object/COFFImportFile.h @@ -53,7 +53,7 @@ public: basic_symbol_iterator symbol_end() const override { DataRefImpl Symb; - Symb.p = isCode() ? 2 : 1; + Symb.p = isData() ? 1 : 2; return BasicSymbolRef(Symb, this); } @@ -63,8 +63,8 @@ public: } private: - bool isCode() const { - return getCOFFImportHeader()->getType() == COFF::IMPORT_CODE; + bool isData() const { + return getCOFFImportHeader()->getType() == COFF::IMPORT_DATA; } }; diff --git a/test/tools/llvm-readobj/Inputs/const-import.lib b/test/tools/llvm-readobj/Inputs/const-import.lib new file mode 100644 index 0000000000000000000000000000000000000000..88a2ac3f836dc02a0bce73a285fa62d1f459fb96 GIT binary patch literal 1200 zcmb_cOHaZ;5FQ?eqvXOX0kL;g#-&JJ#h11c-DWykMfQ) zyW0mCA|y^SJCB`q=i6`Ei>mDnMz_kfx-Pj`DE#=Us`-j0EBXom9H4#!BtHRC&j9HH zDPzs2PTRCt(pv28u{T92$zx9a%7_-)2e^m~2k z&VAeUyS_JeU-gMSpPSB$<2mlY!MeXH0K^g5;bbCEZ^NpUN*rTRtAtpML=vF_e4%Ez z2Z`)>X#4ghVit0OW{A3waSCk>a!XmK$uu0I^AQBn)<9iuq795Usd~o3%^_qyMB`iIDBaRlX4C zir@lJQ^E_mD)J3nh^uN4NK0I8q{5Kyn?zjg8G2hsdH>$aV%}7>uLN^8k!O*SM23`5 zFEnRyiOpF^Ce@ANMd)v0T*q~a72CeVeHqcp!LNk=6sr}0!O6Jd9Vt6}vC)a3`~VQ6 B(v<)J literal 0 HcmV?d00001 diff --git a/test/tools/llvm-readobj/coff-const-import.test b/test/tools/llvm-readobj/coff-const-import.test new file mode 100644 index 00000000000..3c3c48242c6 --- /dev/null +++ b/test/tools/llvm-readobj/coff-const-import.test @@ -0,0 +1,7 @@ +RUN: llvm-readobj -coff-exports %S/Inputs/const-import.lib | FileCheck %s + +CHECK: Type: const +CHECK: Name type: noprefix +CHECK: Symbol: __imp____CFConstantStringClassReference +CHECK: Symbol: ___CFConstantStringClassReference + -- 2.50.1