]> granicus.if.org Git - llvm/commitdiff
COFF: Fix short import lib import name type bitshift
authorMartell Malone <martellmalone@gmail.com>
Sat, 1 Oct 2016 23:10:20 +0000 (23:10 +0000)
committerMartell Malone <martellmalone@gmail.com>
Sat, 1 Oct 2016 23:10:20 +0000 (23:10 +0000)
As per the PE COFF spec (section 8.3, Import Name Type)
Offset: 18 Size 2 bits Name: Type
Offset: 20 Size 3 bits Name: Name Type

Offset: 20 added based on 18+2

Partially commited as rL279069

Differential Revision: https://reviews.llvm.org/D23540

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283055 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/COFF.h
test/tools/llvm-readobj/Inputs/library.lib
test/tools/llvm-readobj/coff-exports-implib.test

index 7dad3e82bda6b489491f23f76315f72be0e3cf04..1ca781b981e5a1fd07dd13535f70c3dd7e53d4e7 100644 (file)
@@ -657,7 +657,7 @@ namespace COFF {
     }
 
     ImportNameType getNameType() const {
-      return static_cast<ImportNameType>((TypeInfo & 0x1C) >> 3);
+      return static_cast<ImportNameType>((TypeInfo & 0x1C) >> 2);
     }
   };
 
index 193380dd4858ce8cf4cc02298eeb4678a31f83ad..7ad7c9052ea82eaa9e628e6a9485d0d968879bd7 100755 (executable)
Binary files a/test/tools/llvm-readobj/Inputs/library.lib and b/test/tools/llvm-readobj/Inputs/library.lib differ
index 9715109b3d524315c6f7305ad49a4d85cf9fd61c..2b327384b255dd5bd69a94e0d892a8502eb8842b 100644 (file)
@@ -3,20 +3,24 @@ RUN: llvm-readobj -coff-exports %p/Inputs/library.lib | FileCheck %s
 CHECK: File: library.dll
 CHECK: Format: COFF-import-file
 CHECK: Type: const
+CHECK: Name type: undecorate
 CHECK: Symbol: __imp__constant
 
 CHECK: File: library.dll
 CHECK: Format: COFF-import-file
 CHECK: Type: data
+CHECK: Name type: noprefix
 CHECK: Symbol: __imp__data
 
 CHECK: File: library.dll
 CHECK: Format: COFF-import-file
 CHECK: Type: code
+CHECK: Name type: name
 CHECK: Symbol: __imp__function
 
 CHECK: File: library.dll
 CHECK: Format: COFF-import-file
 CHECK: Type: code
+CHECK: Name type: ordinal
 CHECK: Symbol: __imp__ordinal