mirror of
https://github.com/RPCS3/llvm.git
synced 2025-05-17 10:55:58 +00:00

Submitted on behalf of Armando Montanez (amontanez@google.com). Objects with unused program headers copied by objcopy would always have nonzero values for program header offset and program header entry size. While technically valid, this atypical behavior triggers warnings in some tools. This change sets the two fields to zero when the program header is unused, better fitting the general expectations for unused program header data. Section headers behaved somewhat similarly (though only with the entry size), and are fixed in this revision as well. Differential Revision: https://reviews.llvm.org/D51961 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342065 91177308-0d34-0410-b5e6-96231b3b80d8
67 lines
1.9 KiB
Plaintext
67 lines
1.9 KiB
Plaintext
# RUN: yaml2obj %s > %t
|
|
# RUN: llvm-objcopy --strip-sections %t %t2
|
|
# RUN: llvm-readobj -file-headers -program-headers %t2 | FileCheck %s
|
|
# RUN: od -t x1 -j 4096 %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 ]
|
|
AddressAlign: 0x0000000000001000
|
|
Content: "DEADBEEF"
|
|
ProgramHeaders:
|
|
- Type: PT_LOAD
|
|
Flags: [ PF_X, PF_R ]
|
|
Sections:
|
|
- Section: .text
|
|
|
|
#DATA: 0010000 de ad be ef
|
|
|
|
#CHECK: ElfHeader {
|
|
#CHECK-NEXT: Ident {
|
|
#CHECK-NEXT: Magic: (7F 45 4C 46)
|
|
#CHECK-NEXT: Class: 64-bit (0x2)
|
|
#CHECK-NEXT: DataEncoding: LittleEndian (0x1)
|
|
#CHECK-NEXT: FileVersion: 1
|
|
#CHECK-NEXT: OS/ABI: SystemV (0x0)
|
|
#CHECK-NEXT: ABIVersion: 0
|
|
#CHECK-NEXT: Unused: (00 00 00 00 00 00 00)
|
|
#CHECK-NEXT: }
|
|
#CHECK-NEXT: Type: Executable (0x2)
|
|
#CHECK-NEXT: Machine: EM_X86_64 (0x3E)
|
|
#CHECK-NEXT: Version: 1
|
|
#CHECK-NEXT: Entry: 0x0
|
|
#CHECK-NEXT: ProgramHeaderOffset: 0x40
|
|
#CHECK-NEXT: SectionHeaderOffset: 0x0
|
|
#CHECK-NEXT: Flags [ (0x0)
|
|
#CHECK-NEXT: ]
|
|
#CHECK-NEXT: HeaderSize: 64
|
|
#CHECK-NEXT: ProgramHeaderEntrySize: 56
|
|
#CHECK-NEXT: ProgramHeaderCount: 1
|
|
#CHECK-NEXT: SectionHeaderEntrySize: 0
|
|
#CHECK-NEXT: SectionHeaderCount: 0
|
|
#CHECK-NEXT: StringTableSectionIndex: 0
|
|
#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: 4
|
|
#CHECK-NEXT: MemSize: 4
|
|
#CHECK-NEXT: Flags [ (0x5)
|
|
#CHECK-NEXT: PF_R (0x4)
|
|
#CHECK-NEXT: PF_X (0x1)
|
|
#CHECK-NEXT: ]
|
|
#CHECK-NEXT: Alignment: 4096
|
|
#CHECK-NEXT: }
|
|
#CHECK-NEXT:]
|