[lld] [LLD][COFF] Move delay IAT into its own .didat section. (PR #137100)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 23 22:44:02 PDT 2025
https://github.com/jeremyd2019 updated https://github.com/llvm/llvm-project/pull/137100
>From 12e03d404807153c82dff9912206394b3e956e87 Mon Sep 17 00:00:00 2001
From: Jeremy Drake <github at jdrake.com>
Date: Wed, 23 Apr 2025 17:43:53 -0700
Subject: [PATCH] [LLD][COFF] Move delay IAT into its own .didat section.
This allows
IMAGE_GUARD_PROTECT_DELAYLOAD_IAT|IMAGE_GUARD_DELAYLOAD_IAT_IN_ITS_OWN_SECTION
flags to work.
Add tests showing the .didat section is created with the proper
characteristics.
---
lld/COFF/DLL.cpp | 9 +--
lld/COFF/DLL.h | 5 +-
lld/COFF/Driver.cpp | 1 -
lld/COFF/Writer.cpp | 4 +-
lld/test/COFF/arm64-delayimport.yaml | 22 +++++++-
lld/test/COFF/arm64ec-delayimport.test | 50 ++++++++---------
lld/test/COFF/arm64x-delayimport.test | 78 +++++++++++++-------------
lld/test/COFF/delayimports-armnt.yaml | 26 +++++++--
lld/test/COFF/delayimports.test | 29 ++++++++--
lld/test/COFF/delayimports32.test | 27 +++++++--
lld/test/COFF/delayimporttables.yaml | 8 +--
lld/test/COFF/giats.s | 4 +-
12 files changed, 162 insertions(+), 101 deletions(-)
diff --git a/lld/COFF/DLL.cpp b/lld/COFF/DLL.cpp
index 0440507b71756..5d3813ddc6bd5 100644
--- a/lld/COFF/DLL.cpp
+++ b/lld/COFF/DLL.cpp
@@ -891,7 +891,7 @@ void IdataContents::create(COFFLinkerContext &ctx) {
dirs.push_back(make<NullChunk>(sizeof(ImportDirectoryTableEntry), 4));
}
-std::vector<Chunk *> DelayLoadContents::getChunks() {
+std::vector<Chunk *> DelayLoadContents::getRDataChunks() {
std::vector<Chunk *> v;
v.insert(v.end(), dirs.begin(), dirs.end());
v.insert(v.end(), names.begin(), names.end());
@@ -900,13 +900,6 @@ std::vector<Chunk *> DelayLoadContents::getChunks() {
return v;
}
-std::vector<Chunk *> DelayLoadContents::getDataChunks() {
- std::vector<Chunk *> v;
- v.insert(v.end(), moduleHandles.begin(), moduleHandles.end());
- v.insert(v.end(), addresses.begin(), addresses.end());
- return v;
-}
-
uint64_t DelayLoadContents::getDirSize() {
return dirs.size() * sizeof(delay_import_directory_table_entry);
}
diff --git a/lld/COFF/DLL.h b/lld/COFF/DLL.h
index 5105b79f15d31..83e2894371a72 100644
--- a/lld/COFF/DLL.h
+++ b/lld/COFF/DLL.h
@@ -43,8 +43,9 @@ class DelayLoadContents {
void add(DefinedImportData *sym) { imports.push_back(sym); }
bool empty() { return imports.empty(); }
void create();
- std::vector<Chunk *> getChunks();
- std::vector<Chunk *> getDataChunks();
+ ArrayRef<Chunk *> getChunks() { return addresses; }
+ std::vector<Chunk *> getRDataChunks();
+ ArrayRef<Chunk *> getDataChunks() { return moduleHandles; }
ArrayRef<Chunk *> getCodeChunks() { return thunks; }
ArrayRef<Chunk *> getCodePData() { return pdata; }
ArrayRef<Chunk *> getCodeUnwindInfo() { return unwindinfo; }
diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp
index e3ff647209e72..ef5e7cdf69209 100644
--- a/lld/COFF/Driver.cpp
+++ b/lld/COFF/Driver.cpp
@@ -2015,7 +2015,6 @@ void LinkerDriver::linkerMain(ArrayRef<const char *> argsArr) {
// Add default section merging rules after user rules. User rules take
// precedence, but we will emit a warning if there is a conflict.
parseMerge(".idata=.rdata");
- parseMerge(".didat=.rdata");
parseMerge(".edata=.rdata");
parseMerge(".xdata=.rdata");
parseMerge(".00cfg=.rdata");
diff --git a/lld/COFF/Writer.cpp b/lld/COFF/Writer.cpp
index a5582cc8074d1..3e289d8783fa6 100644
--- a/lld/COFF/Writer.cpp
+++ b/lld/COFF/Writer.cpp
@@ -1083,7 +1083,7 @@ void Writer::createSections() {
pdataSec = createSection(".pdata", data | r);
idataSec = createSection(".idata", data | r);
edataSec = createSection(".edata", data | r);
- didatSec = createSection(".didat", data | r);
+ didatSec = createSection(".didat", data | r | w);
if (isArm64EC(ctx.config.machine))
a64xrmSec = createSection(".a64xrm", data | r);
rsrcSec = createSection(".rsrc", data | r);
@@ -1329,6 +1329,8 @@ void Writer::appendImportThunks() {
delayIdata.create();
for (Chunk *c : delayIdata.getChunks())
didatSec->addChunk(c);
+ for (Chunk *c : delayIdata.getRDataChunks())
+ rdataSec->addChunk(c);
for (Chunk *c : delayIdata.getDataChunks())
dataSec->addChunk(c);
for (Chunk *c : delayIdata.getCodeChunks())
diff --git a/lld/test/COFF/arm64-delayimport.yaml b/lld/test/COFF/arm64-delayimport.yaml
index abb9f25d5c379..28099ee76aeea 100644
--- a/lld/test/COFF/arm64-delayimport.yaml
+++ b/lld/test/COFF/arm64-delayimport.yaml
@@ -4,9 +4,10 @@
# RUN: lld-link /entry:main /subsystem:console /out:%t.exe %t.obj %p/Inputs/library-arm64.lib /alternatename:__delayLoadHelper2=main /delayload:library.dll
# RUN: llvm-objdump --no-print-imm-hex -d %t.exe | FileCheck %s --check-prefix DISASM
# RUN: llvm-readobj --coff-imports %t.exe | FileCheck %s -check-prefix IMPORTS
+# RUN: llvm-readobj --section-headers %t.exe | FileCheck %s -check-prefix SECTION
-# DISASM: 140001014: d0000011 adrp x17, 0x140003000
-# DISASM: 140001018: 91002231 add x17, x17, #8
+# DISASM: 140001014: f0000011 adrp x17, 0x140004000
+# DISASM: 140001018: 91000231 add x17, x17, #0
# DISASM: 14000101c: 14000001 b 0x140001020 <.text+0x20>
# DISASM: 140001020: a9b37bfd stp x29, x30, [sp, #-208]!
# DISASM: 140001024: 910003fd mov x29, sp
@@ -41,7 +42,7 @@
# IMPORTS: Name: library.dll
# IMPORTS: Attributes: 0x1
# IMPORTS: ModuleHandle: 0x3000
-# IMPORTS: ImportAddressTable: 0x3008
+# IMPORTS: ImportAddressTable: 0x4000
# IMPORTS: ImportNameTable: 0x2040
# IMPORTS: BoundDelayImportTable: 0x0
# IMPORTS: UnloadDelayImportTable: 0x0
@@ -50,6 +51,21 @@
# IMPORTS: Address: 0x140001014
# IMPORTS: }
# IMPORTS: }
+# SECTION: Name: .didat (2E 64 69 64 61 74 00 00)
+# SECTION-NEXT: VirtualSize: 0x10
+# SECTION-NEXT: VirtualAddress: 0x4000
+# SECTION-NEXT: RawDataSize: 512
+# SECTION-NEXT: PointerToRawData: 0x{{[0-9A-F]+}}
+# SECTION-NEXT: PointerToRelocations: 0x0
+# SECTION-NEXT: PointerToLineNumbers: 0x0
+# SECTION-NEXT: RelocationCount: 0
+# SECTION-NEXT: LineNumberCount: 0
+# SECTION-NEXT: Characteristics [ (0xC0000040)
+# SECTION-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
+# SECTION-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
+# SECTION-NEXT: IMAGE_SCN_MEM_WRITE (0x80000000)
+# SECTION-NEXT: ]
+# SECTION-NEXT: }
--- !COFF
header:
diff --git a/lld/test/COFF/arm64ec-delayimport.test b/lld/test/COFF/arm64ec-delayimport.test
index 1e0bd899ba323..c1a34740418e4 100644
--- a/lld/test/COFF/arm64ec-delayimport.test
+++ b/lld/test/COFF/arm64ec-delayimport.test
@@ -12,9 +12,9 @@ RUN: lld-link -machine:arm64ec -dll -noentry -out:out.dll loadconfig-arm64ec.obj
RUN: helper-mangled.obj test-arm64ec.lib test2-arm64ec.lib -delayload:test.dll -map
RUN: llvm-readobj --hex-dump=.test out.dll | FileCheck --check-prefix=TESTSEC %s
-TESTSEC: 0x18000a000 00600000 88700000 00200000 10100000
-TESTSEC-NEXT: 0x18000a010 08600000 90700000 10200000 30100000
-TESTSEC-NEXT: 0x18000a020 1c100000 3c100000 00300000
+TESTSEC: 0x18000b000 00600000 00900000 00200000 10100000
+TESTSEC-NEXT: 0x18000b010 08600000 08900000 10200000 30100000
+TESTSEC-NEXT: 0x18000b020 1c100000 3c100000 00300000
RUN: llvm-objdump -d out.dll | FileCheck --check-prefix=DISASM %s
DISASM: 0000000180001000 <.text>:
@@ -25,16 +25,16 @@ DISASM-NEXT: 18000100c: d65f03c0 ret
DISASM-NEXT: 180001010: b0000030 adrp x16, 0x180006000
DISASM-NEXT: 180001014: f9400210 ldr x16, [x16]
DISASM-NEXT: 180001018: d61f0200 br x16
-DISASM-NEXT: 18000101c: d000002b adrp x11, 0x180007000
-DISASM-NEXT: 180001020: f940456b ldr x11, [x11, #0x88]
+DISASM-NEXT: 18000101c: 9000004b adrp x11, 0x180009000
+DISASM-NEXT: 180001020: f940016b ldr x11, [x11]
DISASM-NEXT: 180001024: 9000000a adrp x10, 0x180001000 <.text>
DISASM-NEXT: 180001028: 9101414a add x10, x10, #0x50
DISASM-NEXT: 18000102c: 17fffff5 b 0x180001000 <.text>
DISASM-NEXT: 180001030: b0000030 adrp x16, 0x180006000
DISASM-NEXT: 180001034: f9400610 ldr x16, [x16, #0x8]
DISASM-NEXT: 180001038: d61f0200 br x16
-DISASM-NEXT: 18000103c: d000002b adrp x11, 0x180007000
-DISASM-NEXT: 180001040: f940496b ldr x11, [x11, #0x90]
+DISASM-NEXT: 18000103c: 9000004b adrp x11, 0x180009000
+DISASM-NEXT: 180001040: f940056b ldr x11, [x11, #0x8]
DISASM-NEXT: 180001044: 9000000a adrp x10, 0x180001000 <.text>
DISASM-NEXT: 180001048: 9101614a add x10, x10, #0x58
DISASM-NEXT: 18000104c: 17ffffed b 0x180001000 <.text>
@@ -43,13 +43,13 @@ DISASM-NEXT: 180001054: d65f03c0 ret
DISASM-NEXT: 180001058: 52800060 mov w0, #0x3 // =3
DISASM-NEXT: 18000105c: d65f03c0 ret
DISASM-NEXT: ...
-DISASM-NEXT: 180002000: ff 25 82 50 00 00 jmpq *0x5082(%rip) # 0x180007088
+DISASM-NEXT: 180002000: ff 25 fa 6f 00 00 jmpq *0x6ffa(%rip) # 0x180009000
DISASM-NEXT: ...
DISASM-NEXT: 18000200e: 00 00 addb %al, (%rax)
-DISASM-NEXT: 180002010: ff 25 7a 50 00 00 jmpq *0x507a(%rip) # 0x180007090
-DISASM-NEXT: 180002016: 48 8d 05 6b 50 00 00 leaq 0x506b(%rip), %rax # 0x180007088
+DISASM-NEXT: 180002010: ff 25 f2 6f 00 00 jmpq *0x6ff2(%rip) # 0x180009008
+DISASM-NEXT: 180002016: 48 8d 05 e3 6f 00 00 leaq 0x6fe3(%rip), %rax # 0x180009000
DISASM-NEXT: 18000201d: e9 0c 00 00 00 jmp 0x18000202e <.text+0x102e>
-DISASM-NEXT: 180002022: 48 8d 05 67 50 00 00 leaq 0x5067(%rip), %rax # 0x180007090
+DISASM-NEXT: 180002022: 48 8d 05 df 6f 00 00 leaq 0x6fdf(%rip), %rax # 0x180009008
DISASM-NEXT: 180002029: e9 00 00 00 00 jmp 0x18000202e <.text+0x102e>
DISASM-NEXT: 18000202e: 51 pushq %rcx
DISASM-NEXT: 18000202f: 52 pushq %rdx
@@ -61,7 +61,7 @@ DISASM-NEXT: 18000203d: 66 0f 7f 4c 24 10 movdqa %xmm1, 0x10(%rsp)
DISASM-NEXT: 180002043: 66 0f 7f 54 24 20 movdqa %xmm2, 0x20(%rsp)
DISASM-NEXT: 180002049: 66 0f 7f 5c 24 30 movdqa %xmm3, 0x30(%rsp)
DISASM-NEXT: 18000204f: 48 8b d0 movq %rax, %rdx
-DISASM-NEXT: 180002052: 48 8d 0d a7 21 00 00 leaq 0x21a7(%rip), %rcx # 0x180004200
+DISASM-NEXT: 180002052: 48 8d 0d a7 1f 00 00 leaq 0x1fa7(%rip), %rcx # 0x180004000
DISASM-NEXT: 180002059: e8 aa ef ff ff callq 0x180001008 <.text+0x8>
DISASM-NEXT: 18000205e: 66 0f 6f 04 24 movdqa (%rsp), %xmm0
DISASM-NEXT: 180002063: 66 0f 6f 4c 24 10 movdqa 0x10(%rsp), %xmm1
@@ -77,15 +77,15 @@ DISASM-NEXT: 18000207f: ff e0 jmpq *%rax
RUN: llvm-readobj --coff-load-config out.dll | FileCheck --check-prefix=LOADCFG %s
LOADCFG: CHPEMetadata [
LOADCFG: AuxiliaryDelayloadIAT: 0x6000
-LOADCFG-NEXT: AuxiliaryDelayloadIATCopy: 0x4000
+LOADCFG-NEXT: AuxiliaryDelayloadIATCopy: 0x4078
RUN: llvm-readobj --coff-imports out.dll | FileCheck --check-prefix=IMPORTS %s
IMPORTS: DelayImport {
IMPORTS-NEXT: Name: test.dll
IMPORTS-NEXT: Attributes: 0x1
IMPORTS-NEXT: ModuleHandle: 0x7080
-IMPORTS-NEXT: ImportAddressTable: 0x7088
-IMPORTS-NEXT: ImportNameTable: 0x4240
+IMPORTS-NEXT: ImportAddressTable: 0x9000
+IMPORTS-NEXT: ImportNameTable: 0x4040
IMPORTS-NEXT: BoundDelayImportTable: 0x0
IMPORTS-NEXT: UnloadDelayImportTable: 0x0
IMPORTS-NEXT: Import {
@@ -109,17 +109,17 @@ MAP-NEXT: 0001:00000058 func2_exit_thunk 0000000180001058 t
MAP-NEXT: 0001:00001000 func 0000000180002000 test-arm64ec:test.dll
MAP-NEXT: 0001:00001010 func2 0000000180002010 test-arm64ec:test.dll
MAP-NEXT: 0002:00000000 __imp_data 0000000180003000 test2-arm64ec:test2.dll
-MAP-NEXT: 0000:00000000 __hybrid_auxiliary_delayload_iat_copy 0000000180004000 <linker-defined>
-MAP-NEXT: 0002:00001000 __auximpcopy_func 0000000180004000 test-arm64ec:test.dll
-MAP-NEXT: 0002:00001008 __auximpcopy_func2 0000000180004008 test-arm64ec:test.dll
+MAP-NEXT: 0000:00000000 __hybrid_auxiliary_delayload_iat_copy 0000000180004078 <linker-defined>
+MAP-NEXT: 0002:00001078 __auximpcopy_func 0000000180004078 test-arm64ec:test.dll
+MAP-NEXT: 0002:00001080 __auximpcopy_func2 0000000180004080 test-arm64ec:test.dll
MAP: 0002:00003000 __imp_func 0000000180006000 test-arm64ec:test.dll
MAP-NEXT: 0002:00003008 __imp_func2 0000000180006008 test-arm64ec:test.dll
-MAP: 0003:00000088 __imp_aux_func 0000000180007088 test-arm64ec:test.dll
-MAP-NEXT: 0003:00000090 __imp_aux_func2 0000000180007090 test-arm64ec:test.dll
+MAP: 0005:00000000 __imp_aux_func 0000000180009000 test-arm64ec:test.dll
+MAP-NEXT: 0005:00000008 __imp_aux_func2 0000000180009008 test-arm64ec:test.dll
RUN: llvm-readobj --hex-dump=.rdata out.dll | FileCheck --check-prefix=RDATA %s
-RDATA: 0x180004000 1c100080 01000000 3c100080 01000000
-RDATA-NEXT: 0x180004010 00000000 00000000
+RDATA: 0x180004070 {{[0-9a-f]{8} [0-9a-f]{8} }}1c100080 01000000
+RDATA-NEXT: 0x180004080 3c100080 01000000 00000000 00000000
RDATA: 0x180006000 1c100080 01000000 3c100080 01000000
RDATA-NEXT: 0x180006010 00000000 00000000
@@ -127,11 +127,11 @@ RUN: llvm-readobj --coff-basereloc out.dll | FileCheck --check-prefix=RELOC %s
RELOC: BaseReloc [
RELOC-NEXT: Entry {
RELOC-NEXT: Type: DIR64
-RELOC-NEXT: Address: 0x4000
+RELOC-NEXT: Address: 0x4078
RELOC-NEXT: }
RELOC-NEXT: Entry {
RELOC-NEXT: Type: DIR64
-RELOC-NEXT: Address: 0x4008
+RELOC-NEXT: Address: 0x4080
RELOC-NEXT: }
RELOC: Address: 0x6000
RELOC-NEXT: }
@@ -141,7 +141,7 @@ RELOC-NEXT: Address: 0x6008
RELOC-NEXT: }
RUN: llvm-readobj --hex-dump=.pdata out.dll | FileCheck --check-prefix=PDATA %s
-PDATA: 0x180008000 2e200000 81200000 18400000
+PDATA: 0x180008000 2e200000 81200000 90400000
Verify that a demangled version of __delayLoadHelper2 can be used.
diff --git a/lld/test/COFF/arm64x-delayimport.test b/lld/test/COFF/arm64x-delayimport.test
index 56923ef748d09..e2a20ac6b653e 100644
--- a/lld/test/COFF/arm64x-delayimport.test
+++ b/lld/test/COFF/arm64x-delayimport.test
@@ -20,8 +20,8 @@ IMPORTS: DelayImport {
IMPORTS-NEXT: Name: test.dll
IMPORTS-NEXT: Attributes: 0x1
IMPORTS-NEXT: ModuleHandle: 0x6080
-IMPORTS-NEXT: ImportAddressTable: 0x6088
-IMPORTS-NEXT: ImportNameTable: 0x4390
+IMPORTS-NEXT: ImportAddressTable: 0x8000
+IMPORTS-NEXT: ImportNameTable: 0x4180
IMPORTS-NEXT: BoundDelayImportTable: 0x0
IMPORTS-NEXT: UnloadDelayImportTable: 0x0
IMPORTS-NEXT: Import {
@@ -34,8 +34,8 @@ IMPORTS: DelayImport {
IMPORTS-NEXT: Name: test.dll
IMPORTS-NEXT: Attributes: 0x1
IMPORTS-NEXT: ModuleHandle: 0x6080
-IMPORTS-NEXT: ImportAddressTable: 0x6098
-IMPORTS-NEXT: ImportNameTable: 0x43A0
+IMPORTS-NEXT: ImportAddressTable: 0x8010
+IMPORTS-NEXT: ImportNameTable: 0x4190
IMPORTS-NEXT: BoundDelayImportTable: 0x0
IMPORTS-NEXT: UnloadDelayImportTable: 0x0
IMPORTS-NEXT: Import {
@@ -46,20 +46,20 @@ IMPORTS-NEXT: }
IMPORTS-NEXT: }
RUN: llvm-readobj --hex-dump=.test out.dll | FileCheck --check-prefix=TESTSEC %s
-TESTSEC: 0x180009000 10500000 98600000 00300000 10200000
+TESTSEC: 0x18000a000 10500000 10800000 00300000 10200000
RUN: llvm-readobj --hex-dump=.testa out.dll | FileCheck --check-prefix=TESTSECA %s
-TESTSECA: 0x18000a000 88600000 08100000
+TESTSECA: 0x18000b000 00800000 08100000
RUN: llvm-objdump -d out.dll | FileCheck --check-prefix=DISASM %s
DISASM: 0000000180001000 <.text>:
DISASM-NEXT: 180001000: 52800060 mov w0, #0x3 // =3
DISASM-NEXT: 180001004: d65f03c0 ret
-DISASM-NEXT: 180001008: b0000030 adrp x16, 0x180006000
-DISASM-NEXT: 18000100c: f9404610 ldr x16, [x16, #0x88]
+DISASM-NEXT: 180001008: f0000030 adrp x16, 0x180008000
+DISASM-NEXT: 18000100c: f9400210 ldr x16, [x16]
DISASM-NEXT: 180001010: d61f0200 br x16
-DISASM-NEXT: 180001014: b0000031 adrp x17, 0x180006000
-DISASM-NEXT: 180001018: 91022231 add x17, x17, #0x88
+DISASM-NEXT: 180001014: f0000031 adrp x17, 0x180008000
+DISASM-NEXT: 180001018: 91000231 add x17, x17, #0x0
DISASM-NEXT: 18000101c: 14000001 b 0x180001020 <.text+0x20>
DISASM-NEXT: 180001020: a9b37bfd stp x29, x30, [sp, #-0xd0]!
DISASM-NEXT: 180001024: 910003fd mov x29, sp
@@ -73,7 +73,7 @@ DISASM-NEXT: 180001040: ad0497e4 stp q4, q5, [sp, #0x90]
DISASM-NEXT: 180001044: ad059fe6 stp q6, q7, [sp, #0xb0]
DISASM-NEXT: 180001048: aa1103e1 mov x1, x17
DISASM-NEXT: 18000104c: f0000000 adrp x0, 0x180004000
-DISASM-NEXT: 180001050: 910d4000 add x0, x0, #0x350
+DISASM-NEXT: 180001050: 91050000 add x0, x0, #0x140
DISASM-NEXT: 180001054: 97ffffeb bl 0x180001000 <.text>
DISASM-NEXT: 180001058: aa0003f0 mov x16, x0
DISASM-NEXT: 18000105c: ad459fe6 ldp q6, q7, [sp, #0xb0]
@@ -94,16 +94,16 @@ DISASM-NEXT: 18000200c: d65f03c0 ret
DISASM-NEXT: 180002010: f0000010 adrp x16, 0x180005000
DISASM-NEXT: 180002014: f9400a10 ldr x16, [x16, #0x10]
DISASM-NEXT: 180002018: d61f0200 br x16
-DISASM-NEXT: 18000201c: 9000002b adrp x11, 0x180006000
-DISASM-NEXT: 180002020: f9404d6b ldr x11, [x11, #0x98]
+DISASM-NEXT: 18000201c: d000002b adrp x11, 0x180008000
+DISASM-NEXT: 180002020: f940096b ldr x11, [x11, #0x10]
DISASM-NEXT: 180002024: 9000000a adrp x10, 0x180002000 <.text+0x1000>
DISASM-NEXT: 180002028: 9100c14a add x10, x10, #0x30
DISASM-NEXT: 18000202c: 17fffff5 b 0x180002000 <.text+0x1000>
DISASM-NEXT: 180002030: 52800080 mov w0, #0x4 // =4
DISASM-NEXT: 180002034: d65f03c0 ret
DISASM-NEXT: ...
-DISASM-NEXT: 180003000: ff 25 92 30 00 00 jmpq *0x3092(%rip) # 0x180006098
-DISASM-NEXT: 180003006: 48 8d 05 8b 30 00 00 leaq 0x308b(%rip), %rax # 0x180006098
+DISASM-NEXT: 180003000: ff 25 0a 50 00 00 jmpq *0x500a(%rip) # 0x180008010
+DISASM-NEXT: 180003006: 48 8d 05 03 50 00 00 leaq 0x5003(%rip), %rax # 0x180008010
DISASM-NEXT: 18000300d: e9 00 00 00 00 jmp 0x180003012 <.text+0x2012>
DISASM-NEXT: 180003012: 51 pushq %rcx
DISASM-NEXT: 180003013: 52 pushq %rdx
@@ -115,7 +115,7 @@ DISASM-NEXT: 180003021: 66 0f 7f 4c 24 10 movdqa %xmm1, 0x10(%rsp)
DISASM-NEXT: 180003027: 66 0f 7f 54 24 20 movdqa %xmm2, 0x20(%rsp)
DISASM-NEXT: 18000302d: 66 0f 7f 5c 24 30 movdqa %xmm3, 0x30(%rsp)
DISASM-NEXT: 180003033: 48 8b d0 movq %rax, %rdx
-DISASM-NEXT: 180003036: 48 8d 0d 13 13 00 00 leaq 0x1313(%rip), %rcx # 0x180004350
+DISASM-NEXT: 180003036: 48 8d 0d 03 11 00 00 leaq 0x1103(%rip), %rcx # 0x180004140
DISASM-NEXT: 18000303d: e8 c6 ef ff ff callq 0x180002008 <.text+0x1008>
DISASM-NEXT: 180003042: 66 0f 6f 04 24 movdqa (%rsp), %xmm0
DISASM-NEXT: 180003047: 66 0f 6f 4c 24 10 movdqa 0x10(%rsp), %xmm1
@@ -130,7 +130,7 @@ DISASM-NEXT: 180003063: ff e0 jmpq *%rax
RUN: llvm-readobj --coff-load-config out.dll | FileCheck --check-prefix=LOADCFG %s
LOADCFG: AuxiliaryDelayloadIAT: 0x5000
-LOADCFG-NEXT: AuxiliaryDelayloadIATCopy: 0x4140
+LOADCFG-NEXT: AuxiliaryDelayloadIATCopy: 0x41C0
RUN: llvm-readobj --hex-dump=.rdata out.dll | FileCheck --check-prefix=AUXIAT %s
AUXIAT: 0x180005000 00000000 00000000 00000000 00000000
@@ -147,8 +147,8 @@ NATIVE-IMPORTS: DelayImport {
NATIVE-IMPORTS-NEXT: Name: test.dll
NATIVE-IMPORTS-NEXT: Attributes: 0x1
NATIVE-IMPORTS-NEXT: ModuleHandle: 0x5080
-NATIVE-IMPORTS-NEXT: ImportAddressTable: 0x5088
-NATIVE-IMPORTS-NEXT: ImportNameTable: 0x3370
+NATIVE-IMPORTS-NEXT: ImportAddressTable: 0x6000
+NATIVE-IMPORTS-NEXT: ImportNameTable: 0x3180
NATIVE-IMPORTS-NEXT: BoundDelayImportTable: 0x0
NATIVE-IMPORTS-NEXT: UnloadDelayImportTable: 0x0
NATIVE-IMPORTS-NEXT: Import {
@@ -164,25 +164,25 @@ NATIVE-IMPORTS-NEXT: DelayImport {
NATIVE-IMPORTS-NEXT: Name: test.dll
NATIVE-IMPORTS-NEXT: Attributes: 0x1
NATIVE-IMPORTS-NEXT: ModuleHandle: 0x5080
-NATIVE-IMPORTS-NEXT: ImportAddressTable: 0x5098
-NATIVE-IMPORTS-NEXT: ImportNameTable: 0x3380
+NATIVE-IMPORTS-NEXT: ImportAddressTable: 0x6010
+NATIVE-IMPORTS-NEXT: ImportNameTable: 0x3190
NATIVE-IMPORTS-NEXT: BoundDelayImportTable: 0x0
NATIVE-IMPORTS-NEXT: UnloadDelayImportTable: 0x0
NATIVE-IMPORTS-NEXT: }
NATIVE-IMPORTS-NEXT: }
RUN: llvm-readobj --hex-dump=.testa out-native.dll | FileCheck --check-prefix=NATIVE-TESTSECA %s
-NATIVE-TESTSECA: 0x180007000 88500000 08100000
+NATIVE-TESTSECA: 0x180008000 00600000 08100000
RUN: llvm-objdump -d out-native.dll | FileCheck --check-prefix=NATIVE-DISASM %s
NATIVE-DISASM: 0000000180001000 <.text>:
NATIVE-DISASM-NEXT: 180001000: 52800060 mov w0, #0x3 // =3
NATIVE-DISASM-NEXT: 180001004: d65f03c0 ret
-NATIVE-DISASM-NEXT: 180001008: 90000030 adrp x16, 0x180005000
-NATIVE-DISASM-NEXT: 18000100c: f9404610 ldr x16, [x16, #0x88]
+NATIVE-DISASM-NEXT: 180001008: b0000030 adrp x16, 0x180006000
+NATIVE-DISASM-NEXT: 18000100c: f9400210 ldr x16, [x16]
NATIVE-DISASM-NEXT: 180001010: d61f0200 br x16
-NATIVE-DISASM-NEXT: 180001014: 90000031 adrp x17, 0x180005000
-NATIVE-DISASM-NEXT: 180001018: 91022231 add x17, x17, #0x88
+NATIVE-DISASM-NEXT: 180001014: b0000031 adrp x17, 0x180006000
+NATIVE-DISASM-NEXT: 180001018: 91000231 add x17, x17, #0x0
NATIVE-DISASM-NEXT: 18000101c: 14000001 b 0x180001020 <.text+0x20>
NATIVE-DISASM-NEXT: 180001020: a9b37bfd stp x29, x30, [sp, #-0xd0]!
NATIVE-DISASM-NEXT: 180001024: 910003fd mov x29, sp
@@ -196,7 +196,7 @@ NATIVE-DISASM-NEXT: 180001040: ad0497e4 stp q4, q5, [sp, #0x90]
NATIVE-DISASM-NEXT: 180001044: ad059fe6 stp q6, q7, [sp, #0xb0]
NATIVE-DISASM-NEXT: 180001048: aa1103e1 mov x1, x17
NATIVE-DISASM-NEXT: 18000104c: d0000000 adrp x0, 0x180003000
-NATIVE-DISASM-NEXT: 180001050: 910cc000 add x0, x0, #0x330
+NATIVE-DISASM-NEXT: 180001050: 91050000 add x0, x0, #0x140
NATIVE-DISASM-NEXT: 180001054: 97ffffeb bl 0x180001000 <.text>
NATIVE-DISASM-NEXT: 180001058: aa0003f0 mov x16, x0
NATIVE-DISASM-NEXT: 18000105c: ad459fe6 ldp q6, q7, [sp, #0xb0]
@@ -212,7 +212,7 @@ NATIVE-DISASM-NEXT: 180001080: d61f0200 br x16
RUN: llvm-readobj --coff-load-config out-native.dll | FileCheck --check-prefix=NATIVE-LOADCFG %s
NATIVE-LOADCFG: AuxiliaryDelayloadIAT: 0x4000
-NATIVE-LOADCFG-NEXT: AuxiliaryDelayloadIATCopy: 0x3140
+NATIVE-LOADCFG-NEXT: AuxiliaryDelayloadIATCopy: 0x31B0
RUN: llvm-readobj --hex-dump=.rdata out-native.dll | FileCheck --check-prefix=NATIVE-AUXIAT %s
NATIVE-AUXIAT: 0x180004000 00000000 00000000 00000000 00000000
@@ -229,8 +229,8 @@ EC-IMPORTS: DelayImport {
EC-IMPORTS-NEXT: Name: test.dll
EC-IMPORTS-NEXT: Attributes: 0x1
EC-IMPORTS-NEXT: ModuleHandle: 0x6080
-EC-IMPORTS-NEXT: ImportAddressTable: 0x6088
-EC-IMPORTS-NEXT: ImportNameTable: 0x4388
+EC-IMPORTS-NEXT: ImportAddressTable: 0x8000
+EC-IMPORTS-NEXT: ImportNameTable: 0x4180
EC-IMPORTS-NEXT: BoundDelayImportTable: 0x0
EC-IMPORTS-NEXT: UnloadDelayImportTable: 0x0
EC-IMPORTS-NEXT: }
@@ -242,8 +242,8 @@ EC-IMPORTS-NEXT: DelayImport {
EC-IMPORTS-NEXT: Name: test.dll
EC-IMPORTS-NEXT: Attributes: 0x1
EC-IMPORTS-NEXT: ModuleHandle: 0x6080
-EC-IMPORTS-NEXT: ImportAddressTable: 0x6090
-EC-IMPORTS-NEXT: ImportNameTable: 0x4390
+EC-IMPORTS-NEXT: ImportAddressTable: 0x8008
+EC-IMPORTS-NEXT: ImportNameTable: 0x4188
EC-IMPORTS-NEXT: BoundDelayImportTable: 0x0
EC-IMPORTS-NEXT: UnloadDelayImportTable: 0x0
EC-IMPORTS-NEXT: Import {
@@ -254,7 +254,7 @@ EC-IMPORTS-NEXT: }
EC-IMPORTS-NEXT: }
RUN: llvm-readobj --hex-dump=.test out-ec.dll | FileCheck --check-prefix=EC-TESTSEC %s
-EC-TESTSEC: 0x180009000 08500000 90600000 00300000 10200000
+EC-TESTSEC: 0x18000a000 08500000 08800000 00300000 10200000
RUN: llvm-objdump -d out-ec.dll | FileCheck --check-prefix=EC-DISASM %s
EC-DISASM: 0000000180001000 <.text>:
@@ -268,16 +268,16 @@ EC-DISASM-NEXT: 18000200c: d65f03c0 ret
EC-DISASM-NEXT: 180002010: f0000010 adrp x16, 0x180005000
EC-DISASM-NEXT: 180002014: f9400610 ldr x16, [x16, #0x8]
EC-DISASM-NEXT: 180002018: d61f0200 br x16
-EC-DISASM-NEXT: 18000201c: 9000002b adrp x11, 0x180006000
-EC-DISASM-NEXT: 180002020: f940496b ldr x11, [x11, #0x90]
+EC-DISASM-NEXT: 18000201c: d000002b adrp x11, 0x180008000
+EC-DISASM-NEXT: 180002020: f940056b ldr x11, [x11, #0x8]
EC-DISASM-NEXT: 180002024: 9000000a adrp x10, 0x180002000 <.text+0x1000>
EC-DISASM-NEXT: 180002028: 9100c14a add x10, x10, #0x30
EC-DISASM-NEXT: 18000202c: 17fffff5 b 0x180002000 <.text+0x1000>
EC-DISASM-NEXT: 180002030: 52800080 mov w0, #0x4 // =4
EC-DISASM-NEXT: 180002034: d65f03c0 ret
EC-DISASM-NEXT: ...
-EC-DISASM-NEXT: 180003000: ff 25 8a 30 00 00 jmpq *0x308a(%rip) # 0x180006090
-EC-DISASM-NEXT: 180003006: 48 8d 05 83 30 00 00 leaq 0x3083(%rip), %rax # 0x180006090
+EC-DISASM-NEXT: 180003000: ff 25 02 50 00 00 jmpq *0x5002(%rip) # 0x180008008
+EC-DISASM-NEXT: 180003006: 48 8d 05 fb 4f 00 00 leaq 0x4ffb(%rip), %rax # 0x180008008
EC-DISASM-NEXT: 18000300d: e9 00 00 00 00 jmp 0x180003012 <.text+0x2012>
EC-DISASM-NEXT: 180003012: 51 pushq %rcx
EC-DISASM-NEXT: 180003013: 52 pushq %rdx
@@ -289,7 +289,7 @@ EC-DISASM-NEXT: 180003021: 66 0f 7f 4c 24 10 movdqa %xmm1, 0x10(%rsp
EC-DISASM-NEXT: 180003027: 66 0f 7f 54 24 20 movdqa %xmm2, 0x20(%rsp)
EC-DISASM-NEXT: 18000302d: 66 0f 7f 5c 24 30 movdqa %xmm3, 0x30(%rsp)
EC-DISASM-NEXT: 180003033: 48 8b d0 movq %rax, %rdx
-EC-DISASM-NEXT: 180003036: 48 8d 0d 0b 13 00 00 leaq 0x130b(%rip), %rcx # 0x180004348
+EC-DISASM-NEXT: 180003036: 48 8d 0d 03 11 00 00 leaq 0x1103(%rip), %rcx # 0x180004140
EC-DISASM-NEXT: 18000303d: e8 c6 ef ff ff callq 0x180002008 <.text+0x1008>
EC-DISASM-NEXT: 180003042: 66 0f 6f 04 24 movdqa (%rsp), %xmm0
EC-DISASM-NEXT: 180003047: 66 0f 6f 4c 24 10 movdqa 0x10(%rsp), %xmm1
@@ -304,7 +304,7 @@ EC-DISASM-NEXT: 180003063: ff e0 jmpq *%rax
RUN: llvm-readobj --coff-load-config out-ec.dll | FileCheck --check-prefix=EC-LOADCFG %s
EC-LOADCFG: AuxiliaryDelayloadIAT: 0x5000
-EC-LOADCFG-NEXT: AuxiliaryDelayloadIATCopy: 0x4140
+EC-LOADCFG-NEXT: AuxiliaryDelayloadIATCopy: 0x41B0
RUN: llvm-readobj --hex-dump=.rdata out-ec.dll | FileCheck --check-prefix=EC-AUXIAT %s
EC-AUXIAT: 0x180005000 00000000 00000000 1c200080 01000000
diff --git a/lld/test/COFF/delayimports-armnt.yaml b/lld/test/COFF/delayimports-armnt.yaml
index ea96d864ef53d..4f9e40efab1a9 100644
--- a/lld/test/COFF/delayimports-armnt.yaml
+++ b/lld/test/COFF/delayimports-armnt.yaml
@@ -7,6 +7,7 @@
# RUN: llvm-readobj --coff-basereloc %t.exe | FileCheck -check-prefix=BASEREL %s
# RUN: llvm-objdump --no-print-imm-hex -d %t.exe | FileCheck --check-prefix=DISASM %s
# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=DIR %s
+# RUN: llvm-readobj --section-headers %t.exe | FileCheck -check-prefix=SECTION %s
# IMPORT: Format: COFF-ARM
# IMPORT-NEXT: Arch: thumb
@@ -15,7 +16,7 @@
# IMPORT-NEXT: Name: library.dll
# IMPORT-NEXT: Attributes: 0x1
# IMPORT-NEXT: ModuleHandle: 0x3008
-# IMPORT-NEXT: ImportAddressTable: 0x3010
+# IMPORT-NEXT: ImportAddressTable: 0x4000
# IMPORT-NEXT: ImportNameTable: 0x2044
# IMPORT-NEXT: BoundDelayImportTable: 0x0
# IMPORT-NEXT: UnloadDelayImportTable: 0x0
@@ -44,16 +45,16 @@
# BASEREL-NEXT: }
# BASEREL-NEXT: Entry {
# BASEREL-NEXT: Type: HIGHLOW
-# BASEREL-NEXT: Address: 0x3010
+# BASEREL-NEXT: Address: 0x4000
# BASEREL-NEXT: }
# BASEREL-NEXT: Entry {
# BASEREL-NEXT: Type: ABSOLUTE
-# BASEREL-NEXT: Address: 0x3000
+# BASEREL-NEXT: Address: 0x4000
# BASEREL-NEXT: }
# BASEREL-NEXT: ]
#
# DISASM: 00401000 <.text>:
-# DISASM: 40100c: f243 0c10 movw r12, #12304
+# DISASM: 40100c: f244 0c00 movw r12, #16384
# DISASM-NEXT: f2c0 0c40 movt r12, #64
# DISASM-NEXT: f000 b800 b.w {{.+}} @ imm = #0
# DISASM-NEXT: e92d 480f push.w {r0, r1, r2, r3, r11, lr}
@@ -70,7 +71,22 @@
#
# DIR: DelayImportDescriptorRVA: 0x2004
# DIR-NEXT: DelayImportDescriptorSize: 0x40
-
+#
+# SECTION: Name: .didat (2E 64 69 64 61 74 00 00)
+# SECTION-NEXT: VirtualSize: 0xC
+# SECTION-NEXT: VirtualAddress: 0x4000
+# SECTION-NEXT: RawDataSize: 512
+# SECTION-NEXT: PointerToRawData: 0x{{[0-9A-F]+}}
+# SECTION-NEXT: PointerToRelocations: 0x0
+# SECTION-NEXT: PointerToLineNumbers: 0x0
+# SECTION-NEXT: RelocationCount: 0
+# SECTION-NEXT: LineNumberCount: 0
+# SECTION-NEXT: Characteristics [ (0xC0000040)
+# SECTION-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
+# SECTION-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
+# SECTION-NEXT: IMAGE_SCN_MEM_WRITE (0x80000000)
+# SECTION-NEXT: ]
+# SECTION-NEXT: }
--- !COFF
header:
diff --git a/lld/test/COFF/delayimports.test b/lld/test/COFF/delayimports.test
index f410eef35fd1d..551db230d6a5a 100644
--- a/lld/test/COFF/delayimports.test
+++ b/lld/test/COFF/delayimports.test
@@ -4,13 +4,14 @@
# RUN: llvm-readobj --coff-imports %t.exe | FileCheck -check-prefix=IMPORT %s
# RUN: llvm-readobj --coff-basereloc %t.exe | FileCheck -check-prefix=BASEREL %s
# RUN: llvm-readobj --unwind %t.exe | FileCheck -check-prefix=UNWIND %s
+# RUN: llvm-readobj --section-headers %t.exe | FileCheck -check-prefix=SECTION %s
IMPORT: DelayImport {
IMPORT-NEXT: Name: std64.dll
IMPORT-NEXT: Attributes: 0x1
IMPORT-NEXT: ModuleHandle: 0x3018
-IMPORT-NEXT: ImportAddressTable: 0x3020
-IMPORT-NEXT: ImportNameTable: 0x2050
+IMPORT-NEXT: ImportAddressTable: 0x5000
+IMPORT-NEXT: ImportNameTable: 0x2040
IMPORT-NEXT: BoundDelayImportTable: 0x0
IMPORT-NEXT: UnloadDelayImportTable: 0x0
IMPORT-NEXT: Import {
@@ -30,22 +31,22 @@ IMPORT-NEXT: }
BASEREL: BaseReloc [
BASEREL-NEXT: Entry {
BASEREL-NEXT: Type: DIR64
-BASEREL-NEXT: Address: 0x3020
+BASEREL-NEXT: Address: 0x5000
BASEREL-NEXT: }
BASEREL-NEXT: Entry {
BASEREL-NEXT: Type: DIR64
-BASEREL-NEXT: Address: 0x3028
+BASEREL-NEXT: Address: 0x5008
BASEREL-NEXT: }
BASEREL-NEXT: Entry {
BASEREL-NEXT: Type: DIR64
-BASEREL-NEXT: Address: 0x3030
+BASEREL-NEXT: Address: 0x5010
BASEREL-NEXT: }
UNWIND: UnwindInformation [
UNWIND-NEXT: RuntimeFunction {
UNWIND-NEXT: StartAddress: (0x14000108A)
UNWIND-NEXT: EndAddress: (0x1400010DD)
-UNWIND-NEXT: UnwindInfoAddress: (0x140002000)
+UNWIND-NEXT: UnwindInfoAddress: (0x140002088)
UNWIND-NEXT: UnwindInfo {
UNWIND-NEXT: Version: 1
UNWIND-NEXT: Flags [ (0x0)
@@ -64,3 +65,19 @@ UNWIND-NEXT: ]
UNWIND-NEXT: }
UNWIND-NEXT: }
UNWIND-NEXT: ]
+
+SECTION: Name: .didat (2E 64 69 64 61 74 00 00)
+SECTION-NEXT: VirtualSize: 0x20
+SECTION-NEXT: VirtualAddress: 0x5000
+SECTION-NEXT: RawDataSize: 512
+SECTION-NEXT: PointerToRawData: 0x{{[0-9A-F]+}}
+SECTION-NEXT: PointerToRelocations: 0x0
+SECTION-NEXT: PointerToLineNumbers: 0x0
+SECTION-NEXT: RelocationCount: 0
+SECTION-NEXT: LineNumberCount: 0
+SECTION-NEXT: Characteristics [ (0xC0000040)
+SECTION-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
+SECTION-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
+SECTION-NEXT: IMAGE_SCN_MEM_WRITE (0x80000000)
+SECTION-NEXT: ]
+SECTION-NEXT: }
diff --git a/lld/test/COFF/delayimports32.test b/lld/test/COFF/delayimports32.test
index 58217ce28f68c..34bd835e16ac4 100644
--- a/lld/test/COFF/delayimports32.test
+++ b/lld/test/COFF/delayimports32.test
@@ -6,6 +6,7 @@
# RUN: llvm-readobj --coff-imports %t.exe | FileCheck -check-prefix=IMPORT %s
# RUN: llvm-readobj --coff-basereloc %t.exe | FileCheck -check-prefix=BASEREL %s
# RUN: llvm-objdump --no-print-imm-hex -d %t.exe | FileCheck --check-prefix=DISASM %s
+# RUN: llvm-readobj --section-headers %t.exe | FileCheck -check-prefix=SECTION %s
IMPORT: Format: COFF-i386
IMPORT-NEXT: Arch: i386
@@ -14,7 +15,7 @@ IMPORT-NEXT: DelayImport {
IMPORT-NEXT: Name: std32.dll
IMPORT-NEXT: Attributes: 0x1
IMPORT-NEXT: ModuleHandle: 0x3018
-IMPORT-NEXT: ImportAddressTable: 0x3020
+IMPORT-NEXT: ImportAddressTable: 0x4000
IMPORT-NEXT: ImportNameTable: 0x2040
IMPORT-NEXT: BoundDelayImportTable: 0x0
IMPORT-NEXT: UnloadDelayImportTable: 0x0
@@ -63,17 +64,17 @@ BASEREL-NEXT: Address: 0x1000
BASEREL-NEXT: }
BASEREL-NEXT: Entry {
BASEREL-NEXT: Type: HIGHLOW
-BASEREL-NEXT: Address: 0x3020
+BASEREL-NEXT: Address: 0x4000
BASEREL-NEXT: }
BASEREL-NEXT: Entry {
BASEREL-NEXT: Type: HIGHLOW
-BASEREL-NEXT: Address: 0x3024
+BASEREL-NEXT: Address: 0x4004
BASEREL-NEXT: }
BASEREL-NEXT: ]
-DISASM: 1029: b8 20 30 40 00 movl $4206624, %eax
+DISASM: 1029: b8 00 40 40 00 movl $4210688, %eax
DISASM-NEXT: 102e: e9 0a 00 00 00 jmp 0x40103d <.text+0x3d>
-DISASM-NEXT: 1033: b8 24 30 40 00 movl $4206628, %eax
+DISASM-NEXT: 1033: b8 04 40 40 00 movl $4210692, %eax
DISASM-NEXT: 1038: e9 00 00 00 00 jmp 0x40103d <.text+0x3d>
DISASM-NEXT: 103d: 51 pushl %ecx
DISASM-NEXT: 103e: 52 pushl %edx
@@ -83,3 +84,19 @@ DISASM-NEXT: 1045: e8 b6 ff ff ff calll 0x401000 <.text>
DISASM-NEXT: 104a: 5a popl %edx
DISASM-NEXT: 104b: 59 popl %ecx
DISASM-NEXT: 104c: ff e0 jmpl *%eax
+
+SECTION: Name: .didat (2E 64 69 64 61 74 00 00)
+SECTION-NEXT: VirtualSize: 0x10
+SECTION-NEXT: VirtualAddress: 0x4000
+SECTION-NEXT: RawDataSize: 512
+SECTION-NEXT: PointerToRawData: 0x{{[0-9A-F]+}}
+SECTION-NEXT: PointerToRelocations: 0x0
+SECTION-NEXT: PointerToLineNumbers: 0x0
+SECTION-NEXT: RelocationCount: 0
+SECTION-NEXT: LineNumberCount: 0
+SECTION-NEXT: Characteristics [ (0xC0000040)
+SECTION-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
+SECTION-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
+SECTION-NEXT: IMAGE_SCN_MEM_WRITE (0x80000000)
+SECTION-NEXT: ]
+SECTION-NEXT: }
diff --git a/lld/test/COFF/delayimporttables.yaml b/lld/test/COFF/delayimporttables.yaml
index cf54c0a7140a1..a974af93a05c2 100644
--- a/lld/test/COFF/delayimporttables.yaml
+++ b/lld/test/COFF/delayimporttables.yaml
@@ -14,8 +14,8 @@
# CHECK-NEXT: Name: delayimporttables-dll1.dll
# CHECK-NEXT: Attributes: 0x1
# CHECK-NEXT: ModuleHandle: 0x3000
-# CHECK-NEXT: ImportAddressTable: 0x3010
-# CHECK-NEXT: ImportNameTable: 0x2070
+# CHECK-NEXT: ImportAddressTable: 0x5000
+# CHECK-NEXT: ImportNameTable: 0x2060
# CHECK-NEXT: BoundDelayImportTable: 0x0
# CHECK-NEXT: UnloadDelayImportTable: 0x0
# CHECK-NEXT: Import {
@@ -31,8 +31,8 @@
# CHECK-NEXT: Name: delayimporttables-dll2.dll
# CHECK-NEXT: Attributes: 0x1
# CHECK-NEXT: ModuleHandle: 0x3008
-# CHECK-NEXT: ImportAddressTable: 0x3028
-# CHECK-NEXT: ImportNameTable: 0x2088
+# CHECK-NEXT: ImportAddressTable: 0x5018
+# CHECK-NEXT: ImportNameTable: 0x2078
# CHECK-NEXT: BoundDelayImportTable: 0x0
# CHECK-NEXT: UnloadDelayImportTable: 0x0
# CHECK-NEXT: Import {
diff --git a/lld/test/COFF/giats.s b/lld/test/COFF/giats.s
index f870429f39d85..793b734fe0a62 100644
--- a/lld/test/COFF/giats.s
+++ b/lld/test/COFF/giats.s
@@ -37,14 +37,14 @@
# DELAY-CHECK: ImageBase: 0x140000000
# DELAY-CHECK: LoadConfig [
-# DELAY-CHECK: GuardCFFunctionTable: 0x140002124
+# DELAY-CHECK: GuardCFFunctionTable: 0x140002194
# DELAY-CHECK: GuardCFFunctionCount: 2
# DELAY-CHECK: GuardFlags [ (0x10500)
# DELAY-CHECK: CF_FUNCTION_TABLE_PRESENT (0x400)
# DELAY-CHECK: CF_INSTRUMENTED (0x100)
# DELAY-CHECK: CF_LONGJUMP_TABLE_PRESENT (0x10000)
# DELAY-CHECK: ]
-# DELAY-CHECK: GuardAddressTakenIatEntryTable: 0x14000212C
+# DELAY-CHECK: GuardAddressTakenIatEntryTable: 0x14000219C
# DELAY-CHECK: GuardAddressTakenIatEntryCount: 1
# DELAY-CHECK: ]
# DELAY-CHECK: GuardFidTable [
More information about the llvm-commits
mailing list