forked from OSchip/llvm-project
				
			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;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  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
 | 
			
		||||
  for (OutputSection *Sec : OutputSections) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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…
	
		Reference in New Issue