| # RUN: yaml2obj -DELFCLASS=ELFCLASS32 -o %t.32.o %s |
| # RUN: llvm-jitlink -noexec -check %s %t.32.o |
| # RUN: yaml2obj -DELFCLASS=ELFCLASS64 -o %t.64.o %s |
| # RUN: llvm-jitlink -noexec -check %s %t.64.o |
| |
| ### Compiled from the following code with -mattr=+relax to force relocations for |
| ### address_range and DW_CFA_advance_loc (both needed for .balign). |
| ## .text |
| ## .globl main |
| ## .p2align 1 |
| ## .type main,@function |
| ## main: |
| ## .cfi_startproc |
| ## .balign 8 |
| ## addi sp, sp, -16 |
| ## cfa_advance_loc: |
| ## .cfi_def_cfa_offset 16 |
| ## nop |
| ## main_end: |
| ## .size main, main_end-main |
| ## .cfi_endproc |
| |
| --- !ELF |
| FileHeader: |
| Class: [[ELFCLASS]] |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_RISCV |
| SectionHeaderStringTable: .strtab |
| Sections: |
| - Name: .text |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC, SHF_EXECINSTR ] |
| AddressAlign: 0x8 |
| Content: 13000000130101FF13000000 |
| - Name: .eh_frame |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC ] |
| AddressAlign: 0x8 |
| Content: 1000000000000000017A5200017801011B0C02001000000018000000000000000000000000400E10 |
| - Name: .rela.text |
| Type: SHT_RELA |
| Flags: [ SHF_INFO_LINK ] |
| Link: .symtab |
| AddressAlign: 0x8 |
| Info: .text |
| Relocations: |
| - Type: R_RISCV_ALIGN |
| Addend: 4 |
| - Name: .rela.eh_frame |
| Type: SHT_RELA |
| Flags: [ SHF_INFO_LINK ] |
| Link: .symtab |
| AddressAlign: 0x8 |
| Info: .eh_frame |
| Relocations: |
| - Offset: 0x1C |
| Symbol: main |
| Type: R_RISCV_32_PCREL |
| - Offset: 0x20 |
| Symbol: main_end |
| Type: R_RISCV_ADD32 |
| - Offset: 0x20 |
| Symbol: main |
| Type: R_RISCV_SUB32 |
| - Offset: 0x25 |
| Symbol: cfa_advance_loc |
| Type: R_RISCV_SET6 |
| - Offset: 0x25 |
| Symbol: main |
| Type: R_RISCV_SUB6 |
| - Type: SectionHeaderTable |
| Sections: |
| - Name: .strtab |
| - Name: .text |
| - Name: .rela.text |
| - Name: .eh_frame |
| - Name: .rela.eh_frame |
| - Name: .symtab |
| Symbols: |
| - Name: cfa_advance_loc |
| Section: .text |
| Value: 0x8 |
| - Name: main_end |
| Section: .text |
| Value: 0xC |
| - Name: main |
| Type: STT_FUNC |
| Section: .text |
| Binding: STB_GLOBAL |
| Size: 0xC |
| - Name: eh_frame |
| Type: STT_SECTION |
| Binding: STB_GLOBAL |
| Section: .eh_frame |
| Size: 0x28 |
| ... |
| |
| ## CIE_pointer |
| # jitlink-check: *{4}(eh_frame + 0x1c) = main - (eh_frame + 0x1c) |
| ## address_range |
| # jitlink-check: *{4}(eh_frame + 0x20) = main_end - main |
| ## DW_CFA_advance_loc |
| # jitlink-check: (*{1}(eh_frame + 0x25)) & 0x3f = cfa_advance_loc - main |