# RUN: rm -rf %t && mkdir %t && cd %t # RUN: yaml2obj %s -o out # RUN: llvm-readelf -r out | FileCheck %s # CHECK: Relocation section '.crel.text' at offset {{.*}} contains 7 entries: # CHECK-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend # CHECK-NEXT: 0000000000000001 0000000100000004 R_X86_64_PLT32 0000000000000000 a0 - 4 # CHECK-NEXT: 0000000000000005 0000000200000004 R_X86_64_PLT32 0000000000000000 a1 - 4 # CHECK-NEXT: 000000000000000a 0000000300000004 R_X86_64_PLT32 0000000000000000 a2 + 0 # CHECK-NEXT: 0000000000000010 0000000200000001 R_X86_64_64 0000000000000000 a1 - 4 # CHECK-NEXT: 0000000000000018 0000000100000001 R_X86_64_64 0000000000000000 a0 + 80 # CHECK-NEXT: 0000000000000020 0000000000000008 R_X86_64_RELATIVE 8000000000000000{{$}} # CHECK-NEXT: 0000000000000028 0000000400000001 R_X86_64_64 0000000000000000 a3 + 7fffffffffffffff --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS - Name: .crel.text Type: SHT_CREL Info: .text Link: .symtab Relocations: - Offset: 1 Type: R_X86_64_PLT32 Symbol: a0 Addend: -4 - Offset: 5 Type: R_X86_64_PLT32 Symbol: a1 Addend: -4 - Offset: 10 Type: R_X86_64_PLT32 Symbol: a2 Addend: 0 - Offset: 16 Type: R_X86_64_64 Symbol: a1 Addend: -4 - Offset: 24 Type: R_X86_64_64 Symbol: a0 Addend: 128 - Offset: 32 Type: R_X86_64_RELATIVE Addend: 0x8000000000000000 - Offset: 40 Type: R_X86_64_64 Symbol: a3 Addend: 0x7fffffffffffffff Symbols: - Name: a0 - Name: a1 Binding: STB_GLOBAL - Name: a2 Binding: STB_GLOBAL - Name: a3 Binding: STB_GLOBAL ## See output-limit.yaml. While estimating the size of the last byte of .crel.text ## (a SLEB128), checkLimit thinks 10 byte headroom is needed while only 1 is used. ## The file end is 1 byte away from the end of .crel.text (one-byte .strtab). ## Therefore, the --max-size= value has to be at least 10-1-1 larger than the ## actual file size. # RUN: not yaml2obj %s --docnum=2 --max-size=76 -o /dev/null # RUN: yaml2obj %s --docnum=2 --max-size=77 -o out # RUN: %python -c 'import os; print(os.path.getsize("out"))' | FileCheck %s --check-prefix=SIZE # SIZE: 69 --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS - Name: .crel.text Type: SHT_CREL Relocations: - Offset: 1 Type: R_X86_64_64 Addend: -4 - Type: SectionHeaderTable NoHeaders: true