COFF: Add base relocation for delay-import table.
Because the address table of the delay-import table contains absolute address, it needs to be added to the base relocation table. llvm-svn: 240844
This commit is contained in:
parent
9818dd77b4
commit
810551a694
|
@ -326,6 +326,10 @@ public:
|
|||
write64le(Buf + FileOff, Thunk->getRVA() + Config->ImageBase);
|
||||
}
|
||||
|
||||
void getBaserels(std::vector<uint32_t> *Res, Defined *ImageBase) override {
|
||||
Res->push_back(RVA);
|
||||
}
|
||||
|
||||
Chunk *Thunk;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,26 +1,41 @@
|
|||
# RUN: lld -flavor link2 /out:%t.exe /entry:main /subsystem:console \
|
||||
# RUN: %p/Inputs/hello64.obj %p/Inputs/std64.lib /delayload:std64.dll \
|
||||
# RUN: /alternatename:__delayLoadHelper2=main
|
||||
# RUN: llvm-readobj -coff-imports %t.exe | FileCheck %s
|
||||
# RUN: llvm-readobj -coff-imports %t.exe | FileCheck -check-prefix=IMPORT %s
|
||||
# RUN: llvm-readobj -coff-basereloc %t.exe | FileCheck -check-prefix=BASEREL %s
|
||||
|
||||
CHECK: DelayImport {
|
||||
CHECK-NEXT: Name: std64.dll
|
||||
CHECK-NEXT: Attributes: 0x1
|
||||
CHECK-NEXT: ModuleHandle: 0x1018
|
||||
CHECK-NEXT: ImportAddressTable: 0x1020
|
||||
CHECK-NEXT: ImportNameTable: 0x3040
|
||||
CHECK-NEXT: BoundDelayImportTable: 0x0
|
||||
CHECK-NEXT: UnloadDelayImportTable: 0x0
|
||||
CHECK-NEXT: Import {
|
||||
CHECK-NEXT: Symbol: ExitProcess (0)
|
||||
CHECK-NEXT: Address: 0x140002066
|
||||
CHECK-NEXT: }
|
||||
CHECK-NEXT: Import {
|
||||
CHECK-NEXT: Symbol: (50)
|
||||
CHECK-NEXT: Address: 0x1400020BD
|
||||
CHECK-NEXT: }
|
||||
CHECK-NEXT: Import {
|
||||
CHECK-NEXT: Symbol: MessageBoxA (1)
|
||||
CHECK-NEXT: Address: 0x140002114
|
||||
CHECK-NEXT: }
|
||||
CHECK-NEXT: }
|
||||
IMPORT: DelayImport {
|
||||
IMPORT-NEXT: Name: std64.dll
|
||||
IMPORT-NEXT: Attributes: 0x1
|
||||
IMPORT-NEXT: ModuleHandle: 0x1018
|
||||
IMPORT-NEXT: ImportAddressTable: 0x1020
|
||||
IMPORT-NEXT: ImportNameTable: 0x3040
|
||||
IMPORT-NEXT: BoundDelayImportTable: 0x0
|
||||
IMPORT-NEXT: UnloadDelayImportTable: 0x0
|
||||
IMPORT-NEXT: Import {
|
||||
IMPORT-NEXT: Symbol: ExitProcess (0)
|
||||
IMPORT-NEXT: Address: 0x140002066
|
||||
IMPORT-NEXT: }
|
||||
IMPORT-NEXT: Import {
|
||||
IMPORT-NEXT: Symbol: (50)
|
||||
IMPORT-NEXT: Address: 0x1400020BD
|
||||
IMPORT-NEXT: }
|
||||
IMPORT-NEXT: Import {
|
||||
IMPORT-NEXT: Symbol: MessageBoxA (1)
|
||||
IMPORT-NEXT: Address: 0x140002114
|
||||
IMPORT-NEXT: }
|
||||
IMPORT-NEXT: }
|
||||
|
||||
BASEREL: BaseReloc [
|
||||
BASEREL-NEXT: Entry {
|
||||
BASEREL-NEXT: Type: DIR64
|
||||
BASEREL-NEXT: Address: 0x1020
|
||||
BASEREL-NEXT: }
|
||||
BASEREL-NEXT: Entry {
|
||||
BASEREL-NEXT: Type: DIR64
|
||||
BASEREL-NEXT: Address: 0x1028
|
||||
BASEREL-NEXT: }
|
||||
BASEREL-NEXT: Entry {
|
||||
BASEREL-NEXT: Type: DIR64
|
||||
BASEREL-NEXT: Address: 0x1030
|
||||
BASEREL-NEXT: }
|
||||
|
|
Loading…
Reference in New Issue