Skip to content

Commit b26bfcc

Browse files
authored
[llvm-readobj][Object][COFF] Include COFF import file machine type in format string. (#78366)
1 parent e473daa commit b26bfcc

File tree

7 files changed

+34
-12
lines changed

7 files changed

+34
-12
lines changed

llvm/include/llvm/Object/COFFImportFile.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ class COFFImportFile : public SymbolicFile {
6565

6666
uint16_t getMachine() const { return getCOFFImportHeader()->Machine; }
6767

68+
StringRef getFileFormatName() const;
69+
6870
private:
6971
bool isData() const {
7072
return getCOFFImportHeader()->getType() == COFF::IMPORT_DATA;

llvm/lib/Object/COFFImportFile.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,25 @@ using namespace llvm;
3333
namespace llvm {
3434
namespace object {
3535

36+
StringRef COFFImportFile::getFileFormatName() const {
37+
switch (getMachine()) {
38+
case COFF::IMAGE_FILE_MACHINE_I386:
39+
return "COFF-import-file-i386";
40+
case COFF::IMAGE_FILE_MACHINE_AMD64:
41+
return "COFF-import-file-x86-64";
42+
case COFF::IMAGE_FILE_MACHINE_ARMNT:
43+
return "COFF-import-file-ARM";
44+
case COFF::IMAGE_FILE_MACHINE_ARM64:
45+
return "COFF-import-file-ARM64";
46+
case COFF::IMAGE_FILE_MACHINE_ARM64EC:
47+
return "COFF-import-file-ARM64EC";
48+
case COFF::IMAGE_FILE_MACHINE_ARM64X:
49+
return "COFF-import-file-ARM64X";
50+
default:
51+
return "COFF-import-file-<unknown arch>";
52+
}
53+
}
54+
3655
static uint16_t getImgRelRelocation(MachineTypes Machine) {
3756
switch (Machine) {
3857
default:

llvm/test/tools/llvm-dlltool/coff-exports.def

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
; RUN: llvm-dlltool -m i386:x86-64 --input-def %s --output-lib %t.a
2-
; RUN: llvm-readobj %t.a | FileCheck %s
2+
; RUN: llvm-readobj %t.a | FileCheck %s --check-prefixes=CHECK,CHECK-X64
33
; RUN: llvm-nm --print-armap %t.a | FileCheck --check-prefix=SYMTAB %s
44
; RUN: llvm-dlltool -m arm64 --input-def %s --output-lib %t.a
5-
; RUN: llvm-readobj %t.a | FileCheck %s
5+
; RUN: llvm-readobj %t.a | FileCheck %s --check-prefixes=CHECK,CHECK-ARM64
66
; RUN: llvm-nm --print-armap %t.a | FileCheck --check-prefix=SYMTAB %s
77

88
LIBRARY test.dll
@@ -13,7 +13,8 @@ TestFunction3 ; This is a comment
1313
AnotherFunction
1414

1515
; CHECK: File: test.dll
16-
; CHECK: Format: COFF-import-file
16+
; CHECK-X64: Format: COFF-import-file-x86-64
17+
; CHECK-ARM64: Format: COFF-import-file-ARM64
1718
; CHECK: Type: code
1819
; CHECK: Name type: name
1920
; CHECK-NEXT: Symbol: __imp_TestFunction1

llvm/test/tools/llvm-lib/arm64ec-implib.test

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,19 @@ READOBJ-NEXT: Arch: aarch64
2626
READOBJ-NEXT: AddressSize: 64bit
2727
READOBJ-EMPTY:
2828
READOBJ-NEXT: File: test.lib(test.dll)
29-
READOBJ-NEXT: Format: COFF-ARM64
29+
READOBJ-NEXT: Format: COFF-ARM64EC
3030
READOBJ-NEXT: Arch: aarch64
3131
READOBJ-NEXT: AddressSize: 64bit
3232
READOBJ-EMPTY:
3333
READOBJ-NEXT: File: test.dll
34-
READOBJ-NEXT: Format: COFF-import-file
34+
READOBJ-NEXT: Format: COFF-import-file-ARM64EC
3535
READOBJ-NEXT: Type: code
3636
READOBJ-NEXT: Name type: name
3737
READOBJ-NEXT: Symbol: __imp_funcexp
3838
READOBJ-NEXT: Symbol: funcexp
3939
READOBJ-EMPTY:
4040
READOBJ-NEXT: File: test.dll
41-
READOBJ-NEXT: Format: COFF-import-file
41+
READOBJ-NEXT: Format: COFF-import-file-ARM64EC
4242
READOBJ-NEXT: Type: data
4343
READOBJ-NEXT: Name type: name
4444
READOBJ-NEXT: Symbol: __imp_dataexp

llvm/test/tools/llvm-readobj/COFF/exports-implib.test

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
RUN: llvm-readobj --coff-exports %p/Inputs/library.lib | FileCheck %s
22

33
CHECK: File: library.dll
4-
CHECK: Format: COFF-import-file
4+
CHECK: Format: COFF-import-file-i386
55
CHECK: Type: const
66
CHECK: Name type: undecorate
77
CHECK: Symbol: __imp__constant
88

99
CHECK: File: library.dll
10-
CHECK: Format: COFF-import-file
10+
CHECK: Format: COFF-import-file-i386
1111
CHECK: Type: data
1212
CHECK: Name type: noprefix
1313
CHECK: Symbol: __imp__data
1414

1515
CHECK: File: library.dll
16-
CHECK: Format: COFF-import-file
16+
CHECK: Format: COFF-import-file-i386
1717
CHECK: Type: code
1818
CHECK: Name type: name
1919
CHECK: Symbol: __imp__function
2020

2121
CHECK: File: library.dll
22-
CHECK: Format: COFF-import-file
22+
CHECK: Format: COFF-import-file-i386
2323
CHECK: Type: code
2424
CHECK: Name type: ordinal
2525
CHECK: Symbol: __imp__ordinal

llvm/test/tools/llvm-readobj/COFF/file-headers.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ symbols:
320320
# RUN: llvm-readobj -h %p/Inputs/magic.coff-importlib \
321321
# RUN: | FileCheck %s --strict-whitespace --match-full-lines --check-prefix IMPORTLIB
322322

323-
# IMPORTLIB:Format: COFF-import-file
323+
# IMPORTLIB:Format: COFF-import-file-i386
324324
# IMPORTLIB-NEXT:Type: code
325325
# IMPORTLIB-NEXT:Name type: noprefix
326326
# IMPORTLIB-NEXT:Symbol: __imp__func

llvm/tools/llvm-readobj/COFFImportDumper.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ namespace llvm {
2323
void dumpCOFFImportFile(const COFFImportFile *File, ScopedPrinter &Writer) {
2424
Writer.startLine() << '\n';
2525
Writer.printString("File", File->getFileName());
26-
Writer.printString("Format", "COFF-import-file");
26+
Writer.printString("Format", File->getFileFormatName());
2727

2828
const coff_import_header *H = File->getCOFFImportHeader();
2929
switch (H->getType()) {

0 commit comments

Comments
 (0)