Skip to content

Commit

Permalink
[LLD][COFF] Emit locally imported EC symbols for ARM64X (llvm#125527)
Browse files Browse the repository at this point in the history
  • Loading branch information
cjacek authored Feb 5, 2025
1 parent 439de72 commit 8cb3d7b
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 4 deletions.
10 changes: 6 additions & 4 deletions lld/COFF/Writer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1191,10 +1191,12 @@ void Writer::createMiscChunks() {
}

// Create thunks for locally-dllimported symbols.
if (!ctx.symtab.localImportChunks.empty()) {
for (Chunk *c : ctx.symtab.localImportChunks)
rdataSec->addChunk(c);
}
ctx.forEachSymtab([&](SymbolTable &symtab) {
if (!symtab.localImportChunks.empty()) {
for (Chunk *c : symtab.localImportChunks)
rdataSec->addChunk(c);
}
});

// Create Debug Information Chunks
debugInfoSec = config->mingw ? buildidSec : rdataSec;
Expand Down
32 changes: 32 additions & 0 deletions lld/test/COFF/locally-imported-arm64x.s
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// REQUIRES: aarch64

// RUN: llvm-mc -filetype=obj -triple=aarch64-windows %s -o %t.arm64.obj
// RUN: llvm-mc -filetype=obj -triple=arm64ec-windows %s -o %t.arm64ec.obj

// RUN: lld-link -machine:arm64x -dll -noentry %t.arm64.obj %t.arm64ec.obj -out:%t.dll 2>&1 | FileCheck --check-prefix=WARN %s
// WARN: lld-link: warning: {{.*}}.arm64.obj: locally defined symbol imported: func
// WARN-NEXT: lld-link: warning: {{.*}}.arm64ec.obj: locally defined symbol imported: func

// RUN: llvm-readobj --hex-dump=.test %t.dll | FileCheck --check-prefix=TEST %s
// TEST: 0x180005000 00300000 08300000

// RUN: llvm-readobj --coff-basereloc %t.dll | FileCheck --check-prefix=RELOCS %s
// RELOCS: Entry {
// RELOCS-NEXT: Type: DIR64
// RELOCS-NEXT: Address: 0x3000
// RELOCS-NEXT: }
// RELOCS-NEXT: Entry {
// RELOCS-NEXT: Type: DIR64
// RELOCS-NEXT: Address: 0x3008
// RELOCS-NEXT: }

// RUN: llvm-readobj --hex-dump=.rdata %t.dll | FileCheck --check-prefix=RDATA %s
// RDATA: 0x180003000 00100080 01000000 00200080 01000000

.text
.globl func
func:
ret

.section .test, "r"
.rva __imp_func

0 comments on commit 8cb3d7b

Please sign in to comment.