You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			157 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # This test is checking to ensure that if a section is removed in the presence
 | |
| # of a segment that the segment maintains its shape and properties and that any
 | |
| # section inside that segment maintains the relative positioning it had in the
 | |
| # segment. Note worthy is that .text3 keeps its offset despite it being
 | |
| # possible to place it after .text when .text2 is removed.
 | |
| 
 | |
| # RUN: yaml2obj %s -o %t
 | |
| # RUN: llvm-objcopy -R .text2 %t %t2
 | |
| # RUN: llvm-readobj -file-headers -program-headers -sections %t2 | FileCheck %s
 | |
| # RUN: od -t x1 -j 8192 %t2 | FileCheck %s --check-prefix=DATA
 | |
| 
 | |
| !ELF
 | |
| FileHeader:
 | |
|   Class:           ELFCLASS64
 | |
|   Data:            ELFDATA2LSB
 | |
|   Type:            ET_EXEC
 | |
|   Machine:         EM_X86_64
 | |
| Sections:
 | |
|   - Name:            .text
 | |
|     Type:            SHT_PROGBITS
 | |
|     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
 | |
|     Address:         0x1000
 | |
|     AddressAlign:    0x1000
 | |
|     Size:            4096
 | |
|   - Name:            .text2
 | |
|     Type:            SHT_PROGBITS
 | |
|     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
 | |
|     Address:         0x2000
 | |
|     AddressAlign:    0x1000
 | |
|     Size:            4096
 | |
|     Content:         "DEADBEEF"
 | |
|   - Name:            .text3
 | |
|     Type:            SHT_PROGBITS
 | |
|     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
 | |
|     Address:         0x3000
 | |
|     AddressAlign:    0x1000
 | |
|     Size:            4096
 | |
| ProgramHeaders:
 | |
|   - Type: PT_LOAD
 | |
|     Flags: [ PF_X, PF_R ]
 | |
|     Sections:
 | |
|       - Section: .text
 | |
|       - Section: .text2
 | |
|       - Section: .text3
 | |
| 
 | |
| # Make sure that when we remove a section we overwrite it with zeros
 | |
| # DATA: 0020000 00 00 00 00
 | |
| 
 | |
| #CHECK: SectionHeaderCount: 6
 | |
| 
 | |
| # CHECK: Sections [
 | |
| # CHECK:   Section {
 | |
| # CHECK-NEXT:     Index: 0
 | |
| # CHECK-NEXT:     Name:  (0)
 | |
| # CHECK-NEXT:     Type: SHT_NULL (0x0)
 | |
| # CHECK-NEXT:     Flags [ (0x0)
 | |
| # CHECK-NEXT:     ]
 | |
| # CHECK-NEXT:     Address: 0x0
 | |
| # CHECK-NEXT:     Offset:
 | |
| # CHECK-NEXT:     Size:
 | |
| # CHECK-NEXT:     Link: 0
 | |
| # CHECK-NEXT:     Info: 0
 | |
| # CHECK-NEXT:     AddressAlignment: 0
 | |
| # CHECK-NEXT:     EntrySize: 0
 | |
| # CHECK-NEXT:   }
 | |
| # CHECK-NEXT:   Section {
 | |
| # CHECK-NEXT:     Index: 1
 | |
| # CHECK-NEXT:     Name: .text
 | |
| # CHECK-NEXT:     Type: SHT_PROGBITS
 | |
| # CHECK-NEXT:     Flags [
 | |
| # CHECK-NEXT:       SHF_ALLOC
 | |
| # CHECK-NEXT:       SHF_EXECINSTR
 | |
| # CHECK-NEXT:     ]
 | |
| # CHECK-NEXT:     Address: 0x1000
 | |
| # CHECK-NEXT:     Offset: 0x1000
 | |
| # CHECK-NEXT:     Size:
 | |
| # CHECK-NEXT:     Link: 0
 | |
| # CHECK-NEXT:     Info: 0
 | |
| # CHECK-NEXT:     AddressAlignment: 4096
 | |
| # CHECK-NEXT:     EntrySize: 0
 | |
| # CHECK-NEXT:   }
 | |
| # CHECK-NEXT:   Section {
 | |
| # CHECK-NEXT:     Index: 2
 | |
| # CHECK-NEXT:     Name: .text3
 | |
| # CHECK-NEXT:     Type: SHT_PROGBITS (0x1)
 | |
| # CHECK-NEXT:     Flags [
 | |
| # CHECK-NEXT:       SHF_ALLOC
 | |
| # CHECK-NEXT:       SHF_EXECINSTR
 | |
| # CHECK-NEXT:     ]
 | |
| # CHECK-NEXT:     Address: 0x3000
 | |
| # CHECK-NEXT:     Offset: 0x3000
 | |
| # CHECK-NEXT:     Size:
 | |
| # CHECK-NEXT:     Link: 0
 | |
| # CHECK-NEXT:     Info: 0
 | |
| # CHECK-NEXT:     AddressAlignment: 4096
 | |
| # CHECK-NEXT:     EntrySize: 0
 | |
| # CHECK-NEXT:   }
 | |
| # CHECK-NEXT:   Section {
 | |
| # CHECK-NEXT:     Index: 3
 | |
| # CHECK-NEXT:     Name: .symtab
 | |
| # CHECK-NEXT:     Type: SHT_SYMTAB (0x2)
 | |
| # CHECK-NEXT:     Flags [ (0x0)
 | |
| # CHECK-NEXT:     ]
 | |
| # CHECK-NEXT:     Address: 0x0
 | |
| # CHECK-NEXT:     Offset:
 | |
| # CHECK-NEXT:     Size:
 | |
| # CHECK-NEXT:     Link: 4
 | |
| # CHECK-NEXT:     Info: 1
 | |
| # CHECK-NEXT:     AddressAlignment: 8
 | |
| # CHECK-NEXT:     EntrySize: 24
 | |
| # CHECK-NEXT:   }
 | |
| # CHECK-NEXT:   Section {
 | |
| # CHECK-NEXT:     Index: 4
 | |
| # CHECK-NEXT:     Name: .strtab
 | |
| # CHECK-NEXT:     Type: SHT_STRTAB (0x3)
 | |
| # CHECK-NEXT:     Flags [ (0x0)
 | |
| # CHECK-NEXT:     ]
 | |
| # CHECK-NEXT:     Address: 0x0
 | |
| # CHECK-NEXT:     Offset:
 | |
| # CHECK-NEXT:     Size:
 | |
| # CHECK-NEXT:     Link: 0
 | |
| # CHECK-NEXT:     Info: 0
 | |
| # CHECK-NEXT:     AddressAlignment: 1
 | |
| # CHECK-NEXT:     EntrySize: 0
 | |
| # CHECK-NEXT:   }
 | |
| # CHECK-NEXT:   Section {
 | |
| # CHECK-NEXT:     Index: 5
 | |
| # CHECK-NEXT:     Name: .shstrtab
 | |
| # CHECK-NEXT:     Type: SHT_STRTAB (0x3)
 | |
| # CHECK-NEXT:     Flags [ (0x0)
 | |
| # CHECK-NEXT:     ]
 | |
| # CHECK-NEXT:     Address: 0x0
 | |
| # CHECK-NEXT:     Offset:
 | |
| # CHECK-NEXT:     Size:
 | |
| # CHECK-NEXT:     Link: 0
 | |
| # CHECK-NEXT:     Info: 0
 | |
| # CHECK-NEXT:     AddressAlignment: 1
 | |
| # CHECK-NEXT:     EntrySize: 0
 | |
| # CHECK-NEXT:   }
 | |
| # CHECK-NEXT: ]
 | |
| 
 | |
| #CHECK:     ProgramHeaders [
 | |
| #CHECK-NEXT:  ProgramHeader {
 | |
| #CHECK-NEXT:    Type: PT_LOAD (0x1)
 | |
| #CHECK-NEXT:    Offset: 0x1000
 | |
| #CHECK-NEXT:    VirtualAddress: 0x0
 | |
| #CHECK-NEXT:    PhysicalAddress: 0x0
 | |
| #CHECK-NEXT:    FileSize: 12288
 | |
| #CHECK-NEXT:    MemSize: 12288
 | |
| #CHECK-NEXT:    Flags [ (0x5)
 | |
| #CHECK-NEXT:      PF_R (0x4)
 | |
| #CHECK-NEXT:      PF_X (0x1)
 | |
| #CHECK-NEXT:    ]
 | |
| #CHECK-NEXT:    Alignment: 4096
 | |
| #CHECK-NEXT:  }
 | |
| #CHECK-NEXT:]
 |