| # 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 |