## In this test case we check that we can override the default values for ## ELF header fields in the YAML. ## First we check the default values. # RUN: yaml2obj %s -o %t-default # RUN: llvm-readelf --file-headers %t-default | FileCheck %s --check-prefix=DEFAULT # DEFAULT: Start of program headers: 64 (bytes into file) # DEFAULT: Start of section headers: 200 (bytes into file) # DEFAULT: Size of program headers: 56 (bytes) # DEFAULT: Number of program headers: 2 # DEFAULT: Size of section headers: 64 (bytes) # DEFAULT: Number of section headers: 3 # DEFAULT: Section header string table index: 2 --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL ProgramHeaders: - Type: PT_LOAD - Type: PT_LOAD ## Check we can override all default values using the same values ## and that this does not change the output. # RUN: yaml2obj --docnum=2 %s -o %t-default-override # RUN: cmp %t-default %t-default-override --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL EShEntSize: [[SHENTSIZE=64]] EShOff: [[SHOFF=200]] EShNum: [[SHNUM=3]] EShStrNdx: [[SHSTRNDX=2]] EPhOff: [[PHOFF=64]] EPhEntSize: [[PHENTSIZE=56]] EPhNum: [[PHNUM=2]] ProgramHeaders: - Type: PT_LOAD - Type: PT_LOAD ## Override different fields to check the output produced. ## Override the e_shoff field. # RUN: yaml2obj --docnum=2 %s -DSHOFF=3 -o %t2 # RUN: llvm-readelf --file-headers %t2 | FileCheck %s --check-prefix=SHOFF # SHOFF: Start of section headers: 3 (bytes into file) ## Override the e_shnum field. # RUN: yaml2obj --docnum=2 %s -DSHNUM=2 -o %t3 # RUN: llvm-readelf --file-headers %t3 | FileCheck %s --check-prefix=SHNUM # SHNUM: Number of section headers: 2{{$}} ## Override the e_shstrndx field. # RUN: yaml2obj --docnum=2 %s -DSHSTRNDX=4 -o %t4 # RUN: llvm-readelf --file-headers %t4 | FileCheck %s --check-prefix=SHSTRNDX # SHSTRNDX: Section header string table index: 4{{$}} ## Override the e_shentsize field. ## Check the result using raw output from 'od' because llvm-readelf ## is unable to dump such headers. # RUN: yaml2obj --docnum=2 %s -DSHENTSIZE=1 -o %t5 # RUN: od -A n -t x1 -v -j 0x3a -N 1 %t5 | FileCheck %s --check-prefix=NEWSIZE # RUN: od -A n -t x1 -v -j 0x3a -N 1 %t-default | FileCheck %s --check-prefix=OLDSIZE # NEWSIZE: 01 # OLDSIZE: 40 ## Override the e_phoff field. # RUN: yaml2obj --docnum=2 %s -DPHOFF=3 -o %t6 # RUN: llvm-readelf --file-headers %t6 | FileCheck %s --check-prefix=PHOFF # PHOFF: Start of program headers: 3 (bytes into file){{$}} ## Override the e_phnum field. # RUN: yaml2obj --docnum=2 %s -DPHNUM=1 -o %t7 # RUN: llvm-readelf --file-headers %t7 | FileCheck %s --check-prefix=PHNUM # PHNUM: Number of program headers: 1{{$}} ## Override the e_phentsize field. # RUN: yaml2obj --docnum=2 %s -DPHENTSIZE=1 -o %t8 # RUN: llvm-readelf --file-headers %t8 | FileCheck %s --check-prefix=PHENTSIZE # PHENTSIZE: Size of program headers: 1 (bytes)