1 # RUN: llvm-mc -triple mips-unknown-linux < %s -show-encoding -target-abi=o32 \ 2 # RUN: | FileCheck -check-prefix=ASM %s 3 # RUN: llvm-mc -triple mips64-unknown-linux < %s -show-encoding -target-abi=n32 \ 4 # RUN: | FileCheck -check-prefix=ASM %s 5 # RUN: llvm-mc -triple mips64-unknown-linux < %s -show-encoding -target-abi=n64 \ 6 # RUN: | FileCheck -check-prefix=ASM %s 7 # RUN: llvm-mc -triple mips-unknown-linux < %s -show-encoding -target-abi=o32 \ 8 # RUN: -filetype=obj | llvm-readobj -sections -section-data -r | \ 9 # RUN: FileCheck -check-prefix=OBJ-O32 %s 10 # RUN: llvm-mc -triple mips64-unknown-linux < %s -show-encoding -target-abi=n32 \ 11 # RUN: -filetype=obj | llvm-readobj -sections -section-data -r | \ 12 # RUN: FileCheck -check-prefix=OBJ-N32 %s 13 # RUN: llvm-mc -triple mips64-unknown-linux < %s -show-encoding -target-abi=n64 \ 14 # RUN: -filetype=obj | llvm-readobj -sections -section-data -r | \ 15 # RUN: FileCheck -check-prefix=OBJ-N64 %s 16 .text 17 foo: 18 .reloc 4, R_MIPS_NONE, foo # ASM: .reloc 4, R_MIPS_NONE, foo 19 .reloc 0, R_MIPS_NONE, foo+4 # ASM: .reloc 0, R_MIPS_NONE, foo+4 20 .reloc 8, R_MIPS_32, foo+8 # ASM: .reloc 8, R_MIPS_32, foo+8 21 nop 22 nop 23 nop 24 .reloc 12, R_MIPS_NONE # ASM: .reloc 12, R_MIPS_NONE{{$}} 25 nop 26 .reloc 16, R_MIPS_CALL_HI16, 4 # ASM: .reloc 16, R_MIPS_CALL_HI16, 4 27 nop 28 .reloc 20, R_MIPS_CALL_LO16, 4 # ASM: .reloc 20, R_MIPS_CALL_LO16, 4 29 nop 30 .reloc 24, R_MIPS_CALL16, 4 # ASM: .reloc 24, R_MIPS_CALL16, 4 31 nop 32 .reloc 28, R_MIPS_GOT16, 4 # ASM: .reloc 28, R_MIPS_GOT16, 4 33 nop 34 .reloc 32, R_MIPS_GOT_PAGE, 4 # ASM: .reloc 32, R_MIPS_GOT_PAGE, 4 35 nop 36 .reloc 36, R_MIPS_GOT_OFST, 4 # ASM: .reloc 36, R_MIPS_GOT_OFST, 4 37 nop 38 .reloc 40, R_MIPS_GOT_DISP, 4 # ASM: .reloc 40, R_MIPS_GOT_DISP, 4 39 nop 40 .reloc 44, R_MIPS_GOT_HI16, 4 # ASM: .reloc 44, R_MIPS_GOT_HI16, 4 41 nop 42 .reloc 48, R_MIPS_GOT_LO16, 4 # ASM: .reloc 48, R_MIPS_GOT_LO16, 4 43 nop 44 .reloc 52, R_MIPS_TLS_GOTTPREL, 4 # ASM: .reloc 52, R_MIPS_TLS_GOTTPREL, 4 45 nop 46 .reloc 56, R_MIPS_TLS_DTPREL_HI16, 4 # ASM: .reloc 56, R_MIPS_TLS_DTPREL_HI16, 4 47 nop 48 .reloc 60, R_MIPS_TLS_DTPREL_LO16, 4 # ASM: .reloc 60, R_MIPS_TLS_DTPREL_LO16, 4 49 nop 50 .reloc 64, R_MIPS_TLS_GD, 4 # ASM: .reloc 64, R_MIPS_TLS_GD, 4 51 nop 52 .reloc 68, R_MIPS_TLS_LDM, 4 # ASM: .reloc 68, R_MIPS_TLS_LDM, 4 53 nop 54 .reloc 72, R_MIPS_TLS_TPREL_HI16, 4 # ASM: .reloc 72, R_MIPS_TLS_TPREL_HI16, 4 55 nop 56 .reloc 76, R_MIPS_TLS_TPREL_LO16, 4 # ASM: .reloc 76, R_MIPS_TLS_TPREL_LO16, 4 57 nop 58 .reloc 80, R_MICROMIPS_CALL16, 4 # ASM: .reloc 80, R_MICROMIPS_CALL16, 4 59 nop 60 .reloc 84, R_MICROMIPS_GOT_DISP, 4 # ASM: .reloc 84, R_MICROMIPS_GOT_DISP, 4 61 nop 62 .reloc 88, R_MICROMIPS_GOT_PAGE, 4 # ASM: .reloc 88, R_MICROMIPS_GOT_PAGE, 4 63 nop 64 .reloc 92, R_MICROMIPS_GOT_OFST, 4 # ASM: .reloc 92, R_MICROMIPS_GOT_OFST, 4 65 nop 66 .reloc 96, R_MICROMIPS_GOT16, 4 # ASM: .reloc 96, R_MICROMIPS_GOT16, 4 67 nop 68 .reloc 100, R_MICROMIPS_TLS_GOTTPREL, 4 # ASM: .reloc 100, R_MICROMIPS_TLS_GOTTPREL, 4 69 nop 70 .reloc 104, R_MICROMIPS_TLS_DTPREL_HI16, 4 # ASM: .reloc 104, R_MICROMIPS_TLS_DTPREL_HI16, 4 71 nop 72 .reloc 108, R_MICROMIPS_TLS_DTPREL_LO16, 4 # ASM: .reloc 108, R_MICROMIPS_TLS_DTPREL_LO16, 4 73 nop 74 .reloc 112, R_MICROMIPS_TLS_GD, 4 # ASM: .reloc 112, R_MICROMIPS_TLS_GD, 4 75 nop 76 .reloc 116, R_MICROMIPS_TLS_LDM, 4 # ASM: .reloc 116, R_MICROMIPS_TLS_LDM, 4 77 nop 78 .reloc 120, R_MICROMIPS_TLS_TPREL_HI16, 4 # ASM: .reloc 120, R_MICROMIPS_TLS_TPREL_HI16, 4 79 nop 80 .reloc 124, R_MICROMIPS_TLS_TPREL_LO16, 4 # ASM: .reloc 124, R_MICROMIPS_TLS_TPREL_LO16, 4 81 nop 82 83 # OBJ-O32-LABEL: Name: .text 84 # OBJ-O32: 0000: 00000000 00000000 00000008 00000000 85 # OBJ-O32-NEXT: 0010: 00000000 00000004 00000000 00000000 86 # OBJ-O32-NEXT: 0020: 00000004 00000004 00000004 00000000 87 # OBJ-O32-NEXT: 0030: 00000004 00000000 00000000 00000000 88 # OBJ-O32-NEXT: 0040: 00000000 00000000 00000000 00000000 89 # OBJ-O32-NEXT: 0050: 00000000 00000004 00000004 00000004 90 # OBJ-O32-NEXT: 0060: 00000000 00000000 00000000 00000000 91 # OBJ-O32-NEXT: 0070: 00000000 00000000 00000000 00000000 92 # OBJ-O32-LABEL: } 93 # OBJ-O32-LABEL: Relocations [ 94 # OBJ-O32: 0x0 R_MIPS_NONE .text 0x0 95 # OBJ-O32-NEXT: 0x4 R_MIPS_NONE .text 0x0 96 # OBJ-O32-NEXT: 0x8 R_MIPS_32 .text 0x0 97 # OBJ-O32-NEXT: 0xC R_MIPS_NONE - 0x0 98 # OBJ-O32-NEXT: 0x10 R_MIPS_CALL_HI16 - 0x0 99 # OBJ-O32-NEXT: 0x14 R_MIPS_CALL_LO16 - 0x0 100 # OBJ-O32-NEXT: 0x18 R_MIPS_CALL16 - 0x0 101 # OBJ-O32-NEXT: 0x20 R_MIPS_GOT_PAGE - 0x0 102 # OBJ-O32-NEXT: 0x24 R_MIPS_GOT_OFST - 0x0 103 # OBJ-O32-NEXT: 0x28 R_MIPS_GOT_DISP - 0x0 104 # OBJ-O32-NEXT: 0x2C R_MIPS_GOT_HI16 - 0x0 105 # OBJ-O32-NEXT: 0x30 R_MIPS_GOT_LO16 - 0x0 106 # OBJ-O32-NEXT: 0x34 R_MIPS_TLS_GOTTPREL - 0x0 107 # OBJ-O32-NEXT: 0x38 R_MIPS_TLS_DTPREL_HI16 - 0x0 108 # OBJ-O32-NEXT: 0x3C R_MIPS_TLS_DTPREL_LO16 - 0x0 109 # OBJ-O32-NEXT: 0x40 R_MIPS_TLS_GD - 0x0 110 # OBJ-O32-NEXT: 0x44 R_MIPS_TLS_LDM - 0x0 111 # OBJ-O32-NEXT: 0x48 R_MIPS_TLS_TPREL_HI16 - 0x0 112 # OBJ-O32-NEXT: 0x4C R_MIPS_TLS_TPREL_LO16 - 0x0 113 # OBJ-O32-NEXT: 0x50 R_MICROMIPS_CALL16 - 0x0 114 # OBJ-O32-NEXT: 0x54 R_MICROMIPS_GOT_DISP - 0x0 115 # OBJ-O32-NEXT: 0x58 R_MICROMIPS_GOT_PAGE - 0x0 116 # OBJ-O32-NEXT: 0x5C R_MICROMIPS_GOT_OFST - 0x0 117 # OBJ-O32-NEXT: 0x64 R_MICROMIPS_TLS_GOTTPREL - 0x0 118 # OBJ-O32-NEXT: 0x68 R_MICROMIPS_TLS_DTPREL_HI16 - 0x0 119 # OBJ-O32-NEXT: 0x6C R_MICROMIPS_TLS_DTPREL_LO16 - 0x0 120 # OBJ-O32-NEXT: 0x70 R_MICROMIPS_TLS_GD - 0x0 121 # OBJ-O32-NEXT: 0x74 R_MICROMIPS_TLS_LDM - 0x0 122 # OBJ-O32-NEXT: 0x78 R_MICROMIPS_TLS_TPREL_HI16 - 0x0 123 # OBJ-O32-NEXT: 0x7C R_MICROMIPS_TLS_TPREL_LO16 - 0x0 124 # OBJ-O32-NEXT: 0x1C R_MIPS_GOT16 - 0x0 125 # OBJ-O32-NEXT: 0x60 R_MICROMIPS_GOT16 - 0x0 126 127 # OBJ-N32-LABEL: Name: .text 128 # OBJ-N32: 0000: 00000000 00000000 00000000 00000000 129 # OBJ-N32-NEXT: 0010: 00000000 00000000 00000000 00000000 130 # OBJ-N32-NEXT: 0020: 00000000 00000000 00000000 00000000 131 # OBJ-N32-NEXT: 0030: 00000000 00000000 00000000 00000000 132 # OBJ-N32-NEXT: 0040: 00000000 00000000 00000000 00000000 133 # OBJ-N32-NEXT: 0050: 00000000 00000000 00000000 00000000 134 # OBJ-N32-NEXT: 0060: 00000000 00000000 00000000 00000000 135 # OBJ-N32-NEXT: 0070: 00000000 00000000 00000000 00000000 136 # OBJ-N32-LABEL: } 137 # OBJ-N32-LABEL: Relocations [ 138 139 # OBJ-N32: 0x4 R_MIPS_NONE .text 0x0 140 # OBJ-N32-NEXT: 0x0 R_MIPS_NONE .text 0x4 141 # OBJ-N32-NEXT: 0x8 R_MIPS_32 .text 0x8 142 # OBJ-N32-NEXT: 0xC R_MIPS_NONE - 0x0 143 # OBJ-N32-NEXT: 0x10 R_MIPS_CALL_HI16 - 0x4 144 # OBJ-N32-NEXT: 0x14 R_MIPS_CALL_LO16 - 0x4 145 # OBJ-N32-NEXT: 0x18 R_MIPS_CALL16 - 0x4 146 # OBJ-N32-NEXT: 0x1C R_MIPS_GOT16 - 0x4 147 # OBJ-N32-NEXT: 0x20 R_MIPS_GOT_PAGE - 0x4 148 # OBJ-N32-NEXT: 0x24 R_MIPS_GOT_OFST - 0x4 149 # OBJ-N32-NEXT: 0x28 R_MIPS_GOT_DISP - 0x4 150 # OBJ-N32-NEXT: 0x2C R_MIPS_GOT_HI16 - 0x4 151 # OBJ-N32-NEXT: 0x30 R_MIPS_GOT_LO16 - 0x4 152 # OBJ-N32-NEXT: 0x34 R_MIPS_TLS_GOTTPREL - 0x4 153 # OBJ-N32-NEXT: 0x38 R_MIPS_TLS_DTPREL_HI16 - 0x4 154 # OBJ-N32-NEXT: 0x3C R_MIPS_TLS_DTPREL_LO16 - 0x4 155 # OBJ-N32-NEXT: 0x40 R_MIPS_TLS_GD - 0x4 156 # OBJ-N32-NEXT: 0x44 R_MIPS_TLS_LDM - 0x4 157 # OBJ-N32-NEXT: 0x48 R_MIPS_TLS_TPREL_HI16 - 0x4 158 # OBJ-N32-NEXT: 0x4C R_MIPS_TLS_TPREL_LO16 - 0x4 159 # OBJ-N32-NEXT: 0x50 R_MICROMIPS_CALL16 - 0x4 160 # OBJ-N32-NEXT: 0x54 R_MICROMIPS_GOT_DISP - 0x4 161 # OBJ-N32-NEXT: 0x58 R_MICROMIPS_GOT_PAGE - 0x4 162 # OBJ-N32-NEXT: 0x5C R_MICROMIPS_GOT_OFST - 0x4 163 # OBJ-N32-NEXT: 0x60 R_MICROMIPS_GOT16 - 0x4 164 # OBJ-N32-NEXT: 0x64 R_MICROMIPS_TLS_GOTTPREL - 0x4 165 # OBJ-N32-NEXT: 0x68 R_MICROMIPS_TLS_DTPREL_HI16 - 0x4 166 # OBJ-N32-NEXT: 0x6C R_MICROMIPS_TLS_DTPREL_LO16 - 0x4 167 # OBJ-N32-NEXT: 0x70 R_MICROMIPS_TLS_GD - 0x4 168 # OBJ-N32-NEXT: 0x74 R_MICROMIPS_TLS_LDM - 0x4 169 # OBJ-N32-NEXT: 0x78 R_MICROMIPS_TLS_TPREL_HI16 - 0x4 170 # OBJ-N32-NEXT: 0x7C R_MICROMIPS_TLS_TPREL_LO16 - 0x4 171 172 # OBJ-N64-LABEL: Name: .text 173 # OBJ-N64: 0000: 00000000 00000000 00000000 00000000 174 # OBJ-N64-NEXT: 0010: 00000000 00000000 00000000 00000000 175 # OBJ-N64-NEXT: 0020: 00000000 00000000 00000000 00000000 176 # OBJ-N64-NEXT: 0030: 00000000 00000000 00000000 00000000 177 # OBJ-N64-NEXT: 0040: 00000000 00000000 00000000 00000000 178 # OBJ-N64-NEXT: 0050: 00000000 00000000 00000000 00000000 179 # OBJ-N64-NEXT: 0060: 00000000 00000000 00000000 00000000 180 # OBJ-N64-NEXT: 0070: 00000000 00000000 00000000 00000000 181 # OBJ-N64-LABEL: } 182 # OBJ-N64-LABEL: Relocations [ 183 # OBJ-N64: 0x4 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE .text 0x0 184 # OBJ-N64-NEXT: 0x0 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE .text 0x4 185 # OBJ-N64-NEXT: 0x8 R_MIPS_32/R_MIPS_NONE/R_MIPS_NONE .text 0x8 186 # OBJ-N64-NEXT: 0xC R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE - 0x0 187 # OBJ-N64-NEXT: 0x10 R_MIPS_CALL_HI16/R_MIPS_NONE/R_MIPS_NONE - 0x4 188 # OBJ-N64-NEXT: 0x14 R_MIPS_CALL_LO16/R_MIPS_NONE/R_MIPS_NONE - 0x4 189 # OBJ-N64-NEXT: 0x18 R_MIPS_CALL16/R_MIPS_NONE/R_MIPS_NONE - 0x4 190 # OBJ-N64-NEXT: 0x1C R_MIPS_GOT16/R_MIPS_NONE/R_MIPS_NONE - 0x4 191 # OBJ-N64-NEXT: 0x20 R_MIPS_GOT_PAGE/R_MIPS_NONE/R_MIPS_NONE - 0x4 192 # OBJ-N64-NEXT: 0x24 R_MIPS_GOT_OFST/R_MIPS_NONE/R_MIPS_NONE - 0x4 193 # OBJ-N64-NEXT: 0x28 R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE - 0x4 194 # OBJ-N64-NEXT: 0x2C R_MIPS_GOT_HI16/R_MIPS_NONE/R_MIPS_NONE - 0x4 195 # OBJ-N64-NEXT: 0x30 R_MIPS_GOT_LO16/R_MIPS_NONE/R_MIPS_NONE - 0x4 196 # OBJ-N64-NEXT: 0x34 R_MIPS_TLS_GOTTPREL/R_MIPS_NONE/R_MIPS_NONE - 0x4 197 # OBJ-N64-NEXT: 0x38 R_MIPS_TLS_DTPREL_HI16/R_MIPS_NONE/R_MIPS_NONE - 0x4 198 # OBJ-N64-NEXT: 0x3C R_MIPS_TLS_DTPREL_LO16/R_MIPS_NONE/R_MIPS_NONE - 0x4 199 # OBJ-N64-NEXT: 0x40 R_MIPS_TLS_GD/R_MIPS_NONE/R_MIPS_NONE - 0x4 200 # OBJ-N64-NEXT: 0x44 R_MIPS_TLS_LDM/R_MIPS_NONE/R_MIPS_NONE - 0x4 201 # OBJ-N64-NEXT: 0x48 R_MIPS_TLS_TPREL_HI16/R_MIPS_NONE/R_MIPS_NONE - 0x4 202 # OBJ-N64-NEXT: 0x4C R_MIPS_TLS_TPREL_LO16/R_MIPS_NONE/R_MIPS_NONE - 0x4 203 # OBJ-N64-NEXT: 0x50 R_MICROMIPS_CALL16/R_MIPS_NONE/R_MIPS_NONE - 0x4 204 # OBJ-N64-NEXT: 0x54 R_MICROMIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE - 0x4 205 # OBJ-N64-NEXT: 0x58 R_MICROMIPS_GOT_PAGE/R_MIPS_NONE/R_MIPS_NONE - 0x4 206 # OBJ-N64-NEXT: 0x5C R_MICROMIPS_GOT_OFST/R_MIPS_NONE/R_MIPS_NONE - 0x4 207 # OBJ-N64-NEXT: 0x60 R_MICROMIPS_GOT16/R_MIPS_NONE/R_MIPS_NONE - 0x4 208 # OBJ-N64-NEXT: 0x64 R_MICROMIPS_TLS_GOTTPREL/R_MIPS_NONE/R_MIPS_NONE - 0x4 209 # OBJ-N64-NEXT: 0x68 R_MICROMIPS_TLS_DTPREL_HI16/R_MIPS_NONE/R_MIPS_NONE - 0x4 210 # OBJ-N64-NEXT: 0x6C R_MICROMIPS_TLS_DTPREL_LO16/R_MIPS_NONE/R_MIPS_NONE - 0x4 211 # OBJ-N64-NEXT: 0x70 R_MICROMIPS_TLS_GD/R_MIPS_NONE/R_MIPS_NONE - 0x4 212 # OBJ-N64-NEXT: 0x74 R_MICROMIPS_TLS_LDM/R_MIPS_NONE/R_MIPS_NONE - 0x4 213 # OBJ-N64-NEXT: 0x78 R_MICROMIPS_TLS_TPREL_HI16/R_MIPS_NONE/R_MIPS_NONE - 0x4 214 # OBJ-N64-NEXT: 0x7C R_MICROMIPS_TLS_TPREL_LO16/R_MIPS_NONE/R_MIPS_NONE - 0x4 215