193 lines · yaml
1# Tests RISC-V relocations. We provide a .debug_info section with multiple2# DW_AT_high_pc entries (that's one of the attributes for which relocations are3# resolved by llvm-dwarfdump) and we add a relocation for each of them.4#5# RUN: yaml2obj %s | llvm-dwarfdump - | FileCheck %s6 7# To add more tests you need to modify the Content of the .debug_abbrev and8# .debug_info sections. To do that create a test.s which matches the assembly9# code below, run the command that follows and copy over the "Content" value of10# the respective sections:11#12# ```13# $ cat test.s14# .section .debug_abbrev,"",@progbits15# .byte 1 # Abbreviation Code16# .byte 0x11 # DW_TAG_compile_unit17# .byte 0 # DW_CHILDREN_no18#19# # Add a DW_AT_high_pc for each relocation we test.20# .rept 14 # (UPDATE HERE)21# .byte 0x12 # DW_AT_high_pc22# .byte 0x01 # DW_FORM_addr23# .endr24#25# .byte 0 # EOM(1)26# .byte 0 # EOM(2)27# .byte 0 # EOM(3)28#29# .section .debug_info,"",@progbits30# .4byte 2+4+1+1+8*14 # Length of Unit (UPDATE HERE)31# .2byte 4 # DWARF version number32# .4byte .debug_abbrev # Offset Into Abbrev. Section33# .byte 8 # Address Size (in bytes)34# .byte 1 # Abbrev 135# .8byte 0x00000000000042 # Test 136# .8byte 0x00000000000042 # Test 237# .8byte 0x00000000000042 # Test 338# .8byte 0x00000000000042 # Test 439# .8byte 0x00000000000042 # Test 540# .8byte 0x00000000000042 # Test 641# .8byte 0x00000000000042 # Test 742# .8byte 0x00000000000042 # Test 843# .8byte 0x00000000004242 # Test 944# .8byte 0x00000000004242 # Test 1045# .8byte 0x00000042424242 # Test 1146# .8byte 0x00000042424242 # Test 1247# .8byte 0x42424242424242 # Test 1348# .8byte 0x42424242424242 # Test 1449# $ llvm-mc test.s -filetype obj -triple riscv64 -o - | obj2yaml50# ```51 52--- !ELF53FileHeader:54 Class: ELFCLASS6455 Data: ELFDATA2LSB56 Type: ET_REL57 Machine: EM_RISCV58Sections:59 - Name: .debug_abbrev60 Type: SHT_PROGBITS61 Content: 0111001201120112011201120112011201120112011201120112011201120100000062 - Name: .debug_info63 Type: SHT_PROGBITS64 Content: 7800000004000000000008014200000000000000420000000000000042000000000000004200000000000000420000000000000042000000000000004200000000000000420000000000000042420000000000004242000000000000424242420000000042424242000000004242424242424200424242424242420065 - Name: .rela.debug_info66 Type: SHT_RELA67 Flags: [ SHF_INFO_LINK ]68 Link: .symtab69 EntSize: 0x000000000000001870 Info: .debug_info71 Relocations:72 73 # Test 174 # 0x42 with R_RISCV_NONE(0x1) = 0x4275 # CHECK: DW_AT_high_pc (0x0000000000000042)76 - Offset: 0x000000000000000C # 0xC + 8*077 Symbol: v178 Type: R_RISCV_NONE79 80 # Test 281 # 0x42 with R_RISCV_32(0xFFFFFFFFFFFFFFFF) = 0x00000000FFFFFFFF82 # CHECK-NEXT: DW_AT_high_pc (0x00000000ffffffff)83 - Offset: 0x0000000000000014 # 0xC + 8*184 Symbol: vFFFFFFFFFFFFFFFF85 Type: R_RISCV_3286 87 # Test 388 # 0x42 with R_RISCV_32_PCREL(0x4) = 0x4-0x1C = 0x00000000FFFFFFE889 # CHECK-NEXT: DW_AT_high_pc (0x00000000ffffffe8)90 - Offset: 0x000000000000001C # 0xC + 8*291 Symbol: v492 Type: R_RISCV_32_PCREL93 94 # Test 495 # 0x42 with R_RISCV_64(0xFFFFFFFFFFFFFFFF) = 0xFFFFFFFFFFFFFFFF96 # CHECK-NEXT: DW_AT_high_pc (0xffffffffffffffff)97 - Offset: 0x0000000000000024 # 0xC + 8*398 Symbol: vFFFFFFFFFFFFFFFF99 Type: R_RISCV_64100 101 # Test 5102 # 0x42 with R_RISCV_SET6(1) = 0x41103 # CHECK-NEXT: DW_AT_high_pc (0x0000000000000041)104 - Offset: 0x000000000000002C # 0xC + 8*4105 Symbol: v1106 Type: R_RISCV_SET6107 108 # Test 6109 # 0x42 with R_RISCV_SUB6(0x4) = 0x7E110 # CHECK-NEXT: DW_AT_high_pc (0x000000000000007e)111 - Offset: 0x0000000000000034 # 0xC + 8*5112 Symbol: v4113 Type: R_RISCV_SUB6114 115 # Test 7116 # 0x42 with R_RISCV_ADD8(0x04020103) = 0x45117 # CHECK-NEXT: DW_AT_high_pc (0x0000000000000045)118 - Offset: 0x000000000000003C # 0xC + 8*6119 Symbol: v04020103120 Type: R_RISCV_ADD8121 122 # Test 8123 # 0x42 with R_RISCV_SUB8(0x04020103) = 0x3F124 # CHECK-NEXT: DW_AT_high_pc (0x000000000000003f)125 - Offset: 0x0000000000000044 # 0xC + 8*7126 Symbol: v04020103127 Type: R_RISCV_SUB8128 129 # Test 9130 # 0x4242 with R_RISCV_ADD16(0x04020103) = 0x4345131 # CHECK-NEXT: DW_AT_high_pc (0x0000000000004345)132 - Offset: 0x000000000000004C # 0xC + 8*8133 Symbol: v04020103134 Type: R_RISCV_ADD16135 136 # Test 10137 # 0x4242 with R_RISCV_SUB16(0x04020103) = 0x413F138 # CHECK-NEXT: DW_AT_high_pc (0x000000000000413f)139 - Offset: 0x0000000000000054 # 0xC + 8*9140 Symbol: v04020103141 Type: R_RISCV_SUB16142 143 # Test 11144 # 0x42424242 with R_RISCV_ADD32(0x04020103) = 0x46444345145 # CHECK-NEXT: DW_AT_high_pc (0x0000000046444345)146 - Offset: 0x000000000000005C # 0xC + 8*10147 Symbol: v04020103148 Type: R_RISCV_ADD32149 150 # Test 12151 # 0x42424242 with R_RISCV_SUB32(0x04020103) = 0x3E40413F152 # CHECK-NEXT: DW_AT_high_pc (0x000000003e40413f)153 - Offset: 0x0000000000000064 # 0xC + 8*11154 Symbol: v04020103155 Type: R_RISCV_SUB32156 157 # Test 13158 # 0x0042424242424242 with R_RISCV_ADD64(0x0100000000000000) = 0x0142424242424242159 # CHECK-NEXT: DW_AT_high_pc (0x0142424242424242)160 - Offset: 0x000000000000006C # 0xC + 8*12161 Symbol: v0100000000000000162 Type: R_RISCV_ADD64163 164 # Test 14165 # 0x0042424242424242 with R_RISCV_SUB64(0x0100000000000000) = 0xFF42424242424242166 # CHECK-NEXT: DW_AT_high_pc (0xff42424242424242)167 - Offset: 0x0000000000000074 # 0xC + 8*13168 Symbol: v0100000000000000169 Type: R_RISCV_SUB64170 171Symbols:172 - Name: v1173 Type: STT_SECTION174 Section: .debug_info175 Value: 0x0000000000000001176 - Name: v4177 Type: STT_SECTION178 Section: .debug_info179 Value: 0x0000000000000004180 - Name: v04020103181 Type: STT_SECTION182 Section: .debug_info183 Value: 0x0000000004020103184 - Name: vFFFFFFFFFFFFFFFF185 Type: STT_SECTION186 Section: .debug_info187 Value: 0xFFFFFFFFFFFFFFFF188 - Name: v0100000000000000189 Type: STT_SECTION190 Section: .debug_info191 Value: 0x0100000000000000192...193