# RUN: yaml2obj --docnum=1 %s -o %t # RUN: llvm-objdump -r %t | FileCheck %s --strict-whitespace --match-full-lines # CHECK:RELOCATION RECORDS FOR [.text]: # CHECK-NEXT:OFFSET TYPE VALUE # CHECK-NEXT:0000000000000001 R_X86_64_32 g1+0x1 # CHECK-NEXT:0000000000000002 R_X86_64_64 l1+0x2 # CHECK-NEXT:0000000000000000 R_X86_64_32S g1-0x1 # CHECK-NEXT:0000000000000004 R_X86_64_32S .text-0x8000000000000000 #CHECK-EMPTY: # CHECK-NEXT:RELOCATION RECORDS FOR [nonalloc]: # CHECK-NEXT:OFFSET TYPE VALUE # CHECK-NEXT:0000000000000010 R_X86_64_64 g1+0x1 # CHECK-NEXT:0000000000000020 R_X86_64_64 g2+0x2 # CHECK-NEXT:0000000000000030 R_X86_64_64 *ABS* # CHECK-NOT:{{.}} --- !ELF FileHeader: !FileHeader Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS Content: "0000000000000000" Flags: [SHF_ALLOC] - Name: .crel.text Type: SHT_CREL Info: .text Link: .symtab Relocations: - Offset: 0x1 Symbol: g1 Type: R_X86_64_32 Addend: 1 - Offset: 0x2 Symbol: l1 Type: R_X86_64_64 Addend: 2 - Offset: 0x0 Symbol: g1 Type: R_X86_64_32S Addend: 0xffffffffffffffff - Offset: 0x4 Symbol: .text Type: R_X86_64_32S Addend: 0x8000000000000000 - Name: nonalloc Type: SHT_PROGBITS Size: 0x30 - Name: .crelnonalloc Type: SHT_CREL Info: nonalloc Link: .symtab Relocations: - Offset: 0x10 Symbol: g1 Type: R_X86_64_64 Addend: 1 - Offset: 0x20 Symbol: g2 Type: R_X86_64_64 Addend: 2 - Offset: 0x30 Symbol: 0 Type: R_X86_64_64 Symbols: - Name: .text Type: STT_SECTION Section: .text - Name: l1 - Name: g1 Section: .text Value: 0x0 Size: 4 Binding: STB_GLOBAL - Name: g2 Binding: STB_GLOBAL ## Check relocation formatting on ELFCLASS32 as well. # RUN: yaml2obj --docnum=2 %s > %t2 # RUN: llvm-objdump -r %t2 | FileCheck %s --check-prefix=ELF32 --strict-whitespace --match-full-lines # ELF32:RELOCATION RECORDS FOR [.text]: # ELF32-NEXT:OFFSET TYPE VALUE # ELF32-NEXT:00000008 R_ARM_REL32 l1+0x1 # ELF32-NEXT:00000004 R_ARM_ABS32 g1 --- !ELF FileHeader: Class: ELFCLASS32 Data: ELFDATA2MSB Type: ET_REL Machine: EM_ARM Sections: - Name: .text Type: SHT_PROGBITS Size: 0x10 - Name: .crel.text Type: SHT_CREL Info: .text Link: .symtab Relocations: - Offset: 0x8 Symbol: l1 Type: R_ARM_REL32 Addend: 1 - Offset: 0x4 Symbol: g1 Type: R_ARM_ABS32 Symbols: - Name: l1 - Name: g1 Binding: STB_GLOBAL ## Check CREL with implicit addends. # RUN: yaml2obj --docnum=3 %s -o %t3 # RUN: llvm-objdump -r %t3 | FileCheck %s --check-prefix=IMPLICIT --strict-whitespace --match-full-lines # IMPLICIT:RELOCATION RECORDS FOR [.data]: # IMPLICIT-NEXT:OFFSET TYPE VALUE # IMPLICIT-NEXT:000000000000001f R_X86_64_32 g1 # IMPLICIT-NEXT:000000000000003f R_X86_64_64 g1 # IMPLICIT-NEXT:0000000000000000 R_X86_64_32S l1 --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS - Name: .data Type: SHT_PROGBITS - Name: .crel.data Type: SHT_CREL Flags: [ SHF_INFO_LINK ] Link: .symtab Info: .data Content: 187f030a82017787feffffffffffffff077f0a Symbols: - Name: .text Type: STT_SECTION Section: .text - Name: l1 Section: .text - Name: g1 Section: .text Binding: STB_GLOBAL ## Test errors. # RUN: yaml2obj --docnum=4 %s -o %t.err # RUN: llvm-objdump -r %t.err 2>&1 | FileCheck %s --check-prefix=ERR -DFILE=%t.err # ERR:RELOCATION RECORDS FOR [.data]: # ERR-NEXT:OFFSET TYPE VALUE # ERR-NEXT:warning: '[[FILE]]': unable to decode LEB128 at offset 0x00000000: malformed uleb128, extends past end # ERR-NOT:{{.}} --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS - Name: .data Type: SHT_PROGBITS - Name: .crel.data Type: SHT_CREL Flags: [] Link: .symtab Info: .data Symbols: - Name: .text Type: STT_SECTION Section: .text # RUN: yaml2obj --docnum=5 %s -o %t.err2 # RUN: llvm-objdump -r %t.err2 2>&1 | FileCheck %s --check-prefix=ERR2 -DFILE=%t.err2 # ERR2:RELOCATION RECORDS FOR [.data]: # ERR2-NEXT:OFFSET TYPE VALUE # ERR2-NEXT:warning: '[[FILE]]': unexpected end of data at offset 0x1 while reading [0x1, 0x2) # ERR2-NOT:{{.}} --- !ELF FileHeader: Class: ELFCLASS32 Data: ELFDATA2MSB Type: ET_REL Machine: EM_ARM Sections: - Name: .text Type: SHT_PROGBITS - Name: .data Type: SHT_PROGBITS - Name: .crel.data Type: SHT_CREL Flags: [] Link: .symtab Info: .data Content: 08 Symbols: - Name: .text Type: STT_SECTION Section: .text