mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-28 10:56:07 +00:00
COFF: Set Load Configuration entry in Data Directory.
Load Configuration field points to a structure containing information for SEH. That data strucutre is not created by the linker but provided by an external file. What we have to do is just to set __load_config_used address to the header. llvm-svn: 242427
This commit is contained in:
parent
d2c1d91ed0
commit
afad42f9ea
@ -485,6 +485,12 @@ template <typename PEHeaderTy> void Writer::writeHeader() {
|
|||||||
Dir[TLS_TABLE].Size = 40;
|
Dir[TLS_TABLE].Size = 40;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (Symbol *Sym = Symtab->find("__load_config_used")) {
|
||||||
|
if (Defined *B = dyn_cast<Defined>(Sym->Body)) {
|
||||||
|
Dir[LOAD_CONFIG_TABLE].RelativeVirtualAddress = B->getRVA();
|
||||||
|
Dir[LOAD_CONFIG_TABLE].Size = 64;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Write section table
|
// Write section table
|
||||||
for (OutputSection *Sec : OutputSections) {
|
for (OutputSection *Sec : OutputSections) {
|
||||||
|
42
lld/test/COFF/loadcfg32.test
Normal file
42
lld/test/COFF/loadcfg32.test
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# RUN: yaml2obj < %s > %t.obj
|
||||||
|
# RUN: lld -flavor link2 /out:%t.exe %t.obj /entry:main /subsystem:console
|
||||||
|
# RUN: llvm-readobj -file-headers %t.exe | FileCheck %s
|
||||||
|
|
||||||
|
# CHECK: LoadConfigTableRVA: 0x1000
|
||||||
|
# CHECK: LoadConfigTableSize: 0x40
|
||||||
|
|
||||||
|
---
|
||||||
|
header:
|
||||||
|
Machine: IMAGE_FILE_MACHINE_I386
|
||||||
|
Characteristics: []
|
||||||
|
sections:
|
||||||
|
- Name: .text
|
||||||
|
Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
|
||||||
|
Alignment: 4
|
||||||
|
SectionData: B82A000000C3
|
||||||
|
symbols:
|
||||||
|
- Name: .text
|
||||||
|
Value: 0
|
||||||
|
SectionNumber: 1
|
||||||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||||||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||||||
|
StorageClass: IMAGE_SYM_CLASS_STATIC
|
||||||
|
SectionDefinition:
|
||||||
|
Length: 6
|
||||||
|
NumberOfRelocations: 0
|
||||||
|
NumberOfLinenumbers: 0
|
||||||
|
CheckSum: 0
|
||||||
|
Number: 0
|
||||||
|
- Name: _main
|
||||||
|
Value: 0
|
||||||
|
SectionNumber: 1
|
||||||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||||||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||||||
|
StorageClass: IMAGE_SYM_CLASS_EXTERNAL
|
||||||
|
- Name: __load_config_used
|
||||||
|
Value: 0
|
||||||
|
SectionNumber: 1
|
||||||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||||||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||||||
|
StorageClass: IMAGE_SYM_CLASS_EXTERNAL
|
||||||
|
...
|
Loading…
x
Reference in New Issue
Block a user