brintos

brintos / llvm-project-archived public Read only

0
0
Text · 27.7 KiB · d181a24 Raw
401 lines · plain
1// RUN: llvm-mc -triple mips-unknown-linux < %s -show-encoding \2// RUN:     | FileCheck -check-prefixes=ENCBE,FIXUP %s3// RUN: llvm-mc -triple mipsel-unknown-linux < %s -show-encoding \4// RUN:     | FileCheck -check-prefixes=ENCLE,FIXUP %s5// RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux < %s \6// RUN:     | llvm-readobj -r - | FileCheck -check-prefix=RELOC %s7// RUN: llvm-mc -filetype=obj -triple mips-unknown-linux < %s \8// RUN:     | llvm-readobj --sections --section-data - \9// RUN:     | FileCheck -check-prefix=DATA %s10 11/// MCNullStreamer can handle directives like .tprelword .dtprelword12// RUN: llvm-mc -triple mips -filetype=null %s13 14// Test that we produce the correct relocation.15// FIXME: move more relocation only tests here.16 17// Check prefixes:18// RELOC - Check the relocation in the object.19// FIXUP - Check the fixup on the instruction.20// ENCBE - Check the big-endian encoding on the instruction.21// ENCLE - Check the little-endian encoding on the instruction.22// ????? - Placeholder. Relocation is defined but the way of generating it is23//         unknown.24// FIXME - Placeholder. Generation method is known but doesn't work.25 26// RELOC-LABEL: .rel.text {27// DATA-LABEL: Name: .text28// DATA:       SectionData (29 30// DATA-NEXT:  0000: 00000004 00000000 00000004 0C00000031        .short foo                         // RELOC: R_MIPS_16 foo32 33        .short bar                         // RELOC: R_MIPS_16 .data34 35baz:    .long foo                          // RELOC: R_MIPS_32 foo36 37        .long bar                          // RELOC: R_MIPS_32 .data38 39                                           // ?????: R_MIPS_REL32 foo40 41        jal foo                            // RELOC: R_MIPS_26 foo42                                           // ENCBE: jal foo # encoding: [0b000011AA,A,A,A]43                                           // ENCLE: jal foo # encoding: [A,A,A,0b000011AA]44                                           // FIXUP: # fixup A - offset: 0, value: foo, kind: fixup_Mips_2645 46// The nop from the jal is at 0x001047// DATA-NEXT:  0010: 00000000 0C000001 00000000 2462000048        jal baz                            // RELOC: R_MIPS_26 .text49                                           // ENCBE: jal baz # encoding: [0b000011AA,A,A,A]50                                           // ENCLE: jal baz # encoding: [A,A,A,0b000011AA]51                                           // FIXUP: # fixup A - offset: 0, value: baz, kind: fixup_Mips_2652 53        addiu $2, $3, %hi(foo)             // RELOC: R_MIPS_HI16 foo54                                           // ENCBE: addiu $2, $3, %hi(foo) # encoding: [0x24,0x62,A,A]55                                           // ENCLE: addiu $2, $3, %hi(foo) # encoding: [A,A,0x62,0x24]56                                           // FIXUP: # fixup A - offset: 0, value: %hi(foo), kind: fixup_Mips_HI1657 58// DATA-NEXT:  0020: 24620000 24620000 24620004 2462000059        addiu $2, $3, %lo(foo)             // RELOC: R_MIPS_LO16 foo60                                           // ENCBE: addiu $2, $3, %lo(foo) # encoding: [0x24,0x62,A,A]61                                           // ENCLE: addiu $2, $3, %lo(foo) # encoding: [A,A,0x62,0x24]62                                           // FIXUP: # fixup A - offset: 0, value: %lo(foo), kind: fixup_Mips_LO1663 64        addiu $2, $3, %hi(bar)             // RELOC: R_MIPS_HI16 .data65                                           // ENCBE: addiu $2, $3, %hi(bar) # encoding: [0x24,0x62,A,A]66                                           // ENCLE: addiu $2, $3, %hi(bar) # encoding: [A,A,0x62,0x24]67                                           // FIXUP: # fixup A - offset: 0, value: %hi(bar), kind: fixup_Mips_HI1668 69        addiu $2, $3, %lo(bar)             // RELOC: R_MIPS_LO16 .data70                                           // ENCBE: addiu $2, $3, %lo(bar) # encoding: [0x24,0x62,A,A]71                                           // ENCLE: addiu $2, $3, %lo(bar) # encoding: [A,A,0x62,0x24]72                                           // FIXUP: # fixup A - offset: 0, value: %lo(bar), kind: fixup_Mips_LO1673 74        addiu $2, $3, %gp_rel(foo)         // RELOC: R_MIPS_GPREL16 foo75                                           // ENCBE: addiu $2, $3, %gp_rel(foo) # encoding: [0x24,0x62,A,A]76                                           // ENCLE: addiu $2, $3, %gp_rel(foo) # encoding: [A,A,0x62,0x24]77                                           // FIXUP: # fixup A - offset: 0, value: %gp_rel(foo), kind: fixup_Mips_GPREL78 79// DATA-NEXT:  0030: 24620004 24620000 24420000 2462000080        addiu $2, $3, %gp_rel(bar)         // RELOC: R_MIPS_GPREL16 .data81                                           // ENCBE: addiu $2, $3, %gp_rel(bar) # encoding: [0x24,0x62,A,A]82                                           // ENCLE: addiu $2, $3, %gp_rel(bar) # encoding: [A,A,0x62,0x24]83                                           // FIXUP: # fixup A - offset: 0, value: %gp_rel(bar), kind: fixup_Mips_GPREL84 85                                           // ?????: R_MIPS_LITERAL foo86 87        addiu $2, $3, %got(foo)            // RELOC: R_MIPS_GOT16 foo88                                           // ENCBE: addiu $2, $3, %got(foo) # encoding: [0x24,0x62,A,A]89                                           // ENCLE: addiu $2, $3, %got(foo) # encoding: [A,A,0x62,0x24]90                                           // FIXUP: # fixup A - offset: 0, value: %got(foo), kind: fixup_Mips_GOT91        // %got requires a %lo pair92        addiu $2, $2, %lo(foo)93 94        addiu $2, $3, %got(bar)            // RELOC: R_MIPS_GOT16 .data95                                           // ENCBE: addiu $2, $3, %got(bar) # encoding: [0x24,0x62,A,A]96                                           // ENCLE: addiu $2, $3, %got(bar) # encoding: [A,A,0x62,0x24]97                                           // FIXUP: # fixup A - offset: 0, value: %got(bar), kind: fixup_Mips_GOT98// DATA-NEXT:  0040: 24420004 0000FFBE 2462000099        // %got requires a %lo pair100        addiu $2, $2, %lo(bar)101 102        .short foo-.                       // RELOC: R_MIPS_PC16 foo103        .short baz-.                       // RELOC-NOT: R_MIPS_PC16104 105        addiu $2, $3, %call16(foo)         // RELOC: R_MIPS_CALL16 foo106                                           // ENCBE: addiu $2, $3, %call16(foo) # encoding: [0x24,0x62,A,A]107                                           // ENCLE: addiu $2, $3, %call16(foo) # encoding: [A,A,0x62,0x24]108                                           // FIXUP: # fixup A - offset: 0, value: %call16(foo), kind: fixup_Mips_CALL16109 110	.p2align 4111// DATA-NEXT:  0050: 00000000 00000000 00000000 00000004112        .quad foo                          // RELOC: R_MIPS_64 foo113        .quad bar                          // RELOC: R_MIPS_64 .data114 115                                           // ?????: R_MIPS_GPREL32 foo116                                           // ?????: R_MIPS_UNUSED1 foo117                                           // ?????: R_MIPS_UNUSED2 foo118                                           // ?????: R_MIPS_UNUSED3 foo119                                           // ?????: R_MIPS_SHIFT5 foo120                                           // ?????: R_MIPS_SHIFT6 foo121 122// DATA-NEXT:  0060: 24620000 24620000 24620004 24620000123        addiu $2, $3, %got_disp(foo)       // RELOC: R_MIPS_GOT_DISP foo124                                           // ENCBE: addiu $2, $3, %got_disp(foo) # encoding: [0x24,0x62,A,A]125                                           // ENCLE: addiu $2, $3, %got_disp(foo) # encoding: [A,A,0x62,0x24]126                                           // FIXUP: # fixup A - offset: 0, value: %got_disp(foo), kind: fixup_Mips_GOT_DISP127 128        addiu $2, $3, %got_page(foo)       // RELOC: R_MIPS_GOT_PAGE foo129                                           // ENCBE: addiu $2, $3, %got_page(foo) # encoding: [0x24,0x62,A,A]130                                           // ENCLE: addiu $2, $3, %got_page(foo) # encoding: [A,A,0x62,0x24]131                                           // FIXUP: # fixup A - offset: 0, value: %got_page(foo), kind: fixup_Mips_GOT_PAGE132 133        addiu $2, $3, %got_page(bar)       // RELOC: R_MIPS_GOT_PAGE .data134                                           // ENCBE: addiu $2, $3, %got_page(bar) # encoding: [0x24,0x62,A,A]135                                           // ENCLE: addiu $2, $3, %got_page(bar) # encoding: [A,A,0x62,0x24]136                                           // FIXUP: # fixup A - offset: 0, value: %got_page(bar), kind: fixup_Mips_GOT_PAGE137 138        addiu $2, $3, %got_ofst(foo)       // RELOC: R_MIPS_GOT_OFST foo139                                           // ENCBE: addiu $2, $3, %got_ofst(foo) # encoding: [0x24,0x62,A,A]140                                           // ENCLE: addiu $2, $3, %got_ofst(foo) # encoding: [A,A,0x62,0x24]141                                           // FIXUP: # fixup A - offset: 0, value: %got_ofst(foo), kind: fixup_Mips_GOT_OFST142 143// DATA-NEXT:  0070: 24620004 24620000 24620000 64620000144        addiu $2, $3, %got_ofst(bar)       // RELOC: R_MIPS_GOT_OFST .data145                                           // ENCBE: addiu $2, $3, %got_ofst(bar) # encoding: [0x24,0x62,A,A]146                                           // ENCLE: addiu $2, $3, %got_ofst(bar) # encoding: [A,A,0x62,0x24]147                                           // FIXUP: # fixup A - offset: 0, value: %got_ofst(bar), kind: fixup_Mips_GOT_OFST148 149        addiu $2, $3, %got_hi(foo)         // RELOC: R_MIPS_GOT_HI16 foo150                                           // ENCBE: addiu $2, $3, %got_hi(foo) # encoding: [0x24,0x62,A,A]151                                           // ENCLE: addiu $2, $3, %got_hi(foo) # encoding: [A,A,0x62,0x24]152                                           // FIXUP: # fixup A - offset: 0, value: %got_hi(foo), kind: fixup_Mips_GOT_HI16153 154        addiu $2, $3, %got_lo(foo)         // RELOC: R_MIPS_GOT_LO16 foo155                                           // ENCBE: addiu $2, $3, %got_lo(foo) # encoding: [0x24,0x62,A,A]156                                           // ENCLE: addiu $2, $3, %got_lo(foo) # encoding: [A,A,0x62,0x24]157                                           // FIXUP: # fixup A - offset: 0, value: %got_lo(foo), kind: fixup_Mips_GOT_LO16158 159        // It turns out that %neg() isn't actually usable for anything. It's160        // not supported in .quad and it doesn't make sense to use a 64-bit161        // reloc on a 32-bit instruction.162        // .quad %neg(foo)                 // ?????: R_MIPS_SUB foo163                                           // ?????: R_MIPS_INSERT_A164                                           // ?????: R_MIPS_INSERT_B165                                           // ?????: R_MIPS_DELETE166 167        .set mips64168        daddiu $2, $3, %higher(foo)        // RELOC: R_MIPS_HIGHER foo169                                           // ENCBE: daddiu $2, $3, %higher(foo) # encoding: [0x64,0x62,A,A]170                                           // ENCLE: daddiu $2, $3, %higher(foo) # encoding: [A,A,0x62,0x64]171                                           // FIXUP: # fixup A - offset: 0, value: %higher(foo), kind: fixup_Mips_HIGHER172 173// DATA-NEXT:  0080: 64620000 24620000 24620000 00000000174        daddiu $2, $3, %highest(foo)       // RELOC: R_MIPS_HIGHEST foo175                                           // ENCBE: daddiu $2, $3, %highest(foo) # encoding: [0x64,0x62,A,A]176                                           // ENCLE: daddiu $2, $3, %highest(foo) # encoding: [A,A,0x62,0x64]177                                           // FIXUP: # fixup A - offset: 0, value: %highest(foo), kind: fixup_Mips_HIGHEST178 179        .set mips0180        addiu $2, $3, %call_hi(foo)        // RELOC: R_MIPS_CALL_HI16 foo181                                           // ENCBE: addiu $2, $3, %call_hi(foo) # encoding: [0x24,0x62,A,A]182                                           // ENCLE: addiu $2, $3, %call_hi(foo) # encoding: [A,A,0x62,0x24]183                                           // FIXUP: # fixup A - offset: 0, value: %call_hi(foo), kind: fixup_Mips_CALL_HI16184 185        addiu $2, $3, %call_lo(foo)        // RELOC: R_MIPS_CALL_LO16 foo186                                           // ENCBE: addiu $2, $3, %call_lo(foo) # encoding: [0x24,0x62,A,A]187                                           // ENCLE: addiu $2, $3, %call_lo(foo) # encoding: [A,A,0x62,0x24]188                                           // FIXUP: # fixup A - offset: 0, value: %call_lo(foo), kind: fixup_Mips_CALL_LO16189 190                                           // ?????: R_MIPS_SCN_DISP foo191                                           // ?????: R_MIPS_REL16 foo192                                           // ?????: R_MIPS_ADD_IMMEDIATE foo193                                           // ?????: R_MIPS_PJUMP foo194                                           // ?????: R_MIPS_RELGOT foo195//      jalr $25                           // ?????: R_MIPS_JALR foo196 197                                           // ?????: R_MIPS_TLS_DTPMOD32 foo198        .dtprelword foo                    // RELOC: R_MIPS_TLS_DTPREL32 foo199 200// DATA-NEXT:  0090: 00000000 00000000 24620000 24620000201                                           // ?????: R_MIPS_TLS_DTPMOD64 foo202        .dtpreldword foo                   // RELOC: R_MIPS_TLS_DTPREL64 foo203        addiu $2, $3, %tlsgd(foo)          // RELOC: R_MIPS_TLS_GD foo204                                           // ENCBE: addiu $2, $3, %tlsgd(foo) # encoding: [0x24,0x62,A,A]205                                           // ENCLE: addiu $2, $3, %tlsgd(foo) # encoding: [A,A,0x62,0x24]206                                           // FIXUP: # fixup A - offset: 0, value: %tlsgd(foo), kind: fixup_Mips_TLSGD207 208        addiu $2, $3, %tlsldm(foo)         // RELOC: R_MIPS_TLS_LDM foo209                                           // ENCBE: addiu $2, $3, %tlsldm(foo) # encoding: [0x24,0x62,A,A]210                                           // ENCLE: addiu $2, $3, %tlsldm(foo) # encoding: [A,A,0x62,0x24]211                                           // FIXUP: # fixup A - offset: 0, value: %tlsldm(foo), kind: fixup_Mips_TLSLDM212 213// DATA-NEXT:  00A0: 24620000 24620000 24620000 00000000214        addiu $2, $3, %dtprel_hi(foo)      // RELOC: R_MIPS_TLS_DTPREL_HI16 foo215                                           // ENCBE: addiu $2, $3, %dtprel_hi(foo) # encoding: [0x24,0x62,A,A]216                                           // ENCLE: addiu $2, $3, %dtprel_hi(foo) # encoding: [A,A,0x62,0x24]217                                           // FIXUP: # fixup A - offset: 0, value: %dtprel_hi(foo), kind: fixup_Mips_DTPREL_HI218 219        addiu $2, $3, %dtprel_lo(foo)      // RELOC: R_MIPS_TLS_DTPREL_LO16 foo220                                           // ENCBE: addiu $2, $3, %dtprel_lo(foo) # encoding: [0x24,0x62,A,A]221                                           // ENCLE: addiu $2, $3, %dtprel_lo(foo) # encoding: [A,A,0x62,0x24]222                                           // FIXUP: # fixup A - offset: 0, value: %dtprel_lo(foo), kind: fixup_Mips_DTPREL_LO223 224        addiu $2, $3, %gottprel(foo)       // RELOC: R_MIPS_TLS_GOTTPREL foo225                                           // ENCBE: addiu $2, $3, %gottprel(foo) # encoding: [0x24,0x62,A,A]226                                           // ENCLE: addiu $2, $3, %gottprel(foo) # encoding: [A,A,0x62,0x24]227                                           // FIXUP: # fixup A - offset: 0, value: %gottprel(foo), kind: fixup_Mips_GOTTPREL228 229        .tprelword foo                     // RELOC: R_MIPS_TLS_TPREL32 foo230 231// DATA-NEXT:  00B0: 00000000 00000000 24620000 24620000232        .tpreldword foo                    // RELOC: R_MIPS_TLS_TPREL64 foo233        addiu $2, $3, %tprel_hi(foo)       // RELOC: R_MIPS_TLS_TPREL_HI16 foo234                                           // ENCBE: addiu $2, $3, %tprel_hi(foo) # encoding: [0x24,0x62,A,A]235                                           // ENCLE: addiu $2, $3, %tprel_hi(foo) # encoding: [A,A,0x62,0x24]236                                           // FIXUP: # fixup A - offset: 0, value: %tprel_hi(foo), kind: fixup_Mips_TPREL_HI237 238        addiu $2, $3, %tprel_lo(foo)       // RELOC: R_MIPS_TLS_TPREL_LO16 foo239                                           // ENCBE: addiu $2, $3, %tprel_lo(foo) # encoding: [0x24,0x62,A,A]240                                           // ENCLE: addiu $2, $3, %tprel_lo(foo) # encoding: [A,A,0x62,0x24]241                                           // FIXUP: # fixup A - offset: 0, value: %tprel_lo(foo), kind: fixup_Mips_TPREL_LO242 243// DATA-NEXT:  00C0: D85FFFFF 00000000 CBFFFFFF EC580000244                                           // ?????: R_MIPS_GLOB_DAT foo245        .set mips32r6246        beqzc $2, foo                      // RELOC: R_MIPS_PC21_S2 foo247                                           // ENCBE: beqzc $2, foo # encoding: [0xd8,0b010AAAAA,A,A]248                                           // ENCLE: beqzc $2, foo # encoding: [A,A,0b010AAAAA,0xd8]249                                           // FIXUP: # fixup A - offset: 0, value: foo-4, kind: fixup_MIPS_PC21_S2250 251        bc foo                             // RELOC: R_MIPS_PC26_S2 foo252                                           // ENCBE: bc foo # encoding: [0b110010AA,A,A,A]253                                           // ENCLE: bc foo # encoding: [A,A,A,0b110010AA]254                                           // FIXUP: # fixup A - offset: 0, value: foo-4, kind: fixup_MIPS_PC26_S2255 256        .set mips64r6257        ldpc $2, foo                       // RELOC: R_MIPS_PC18_S3 foo258                                           // ENCBE: ldpc $2, foo # encoding: [0xec,0b010110AA,A,A]259                                           // ENCLE: ldpc $2, foo # encoding: [A,A,0b010110AA,0xec]260                                           // FIXUP: # fixup A - offset: 0, value: foo, kind: fixup_Mips_PC18_S3261 262        .set mips32r6263        lwpc $2, foo                       // RELOC: R_MIPS_PC19_S2 foo264                                           // ENCBE: lwpc $2, foo # encoding: [0xec,0b01001AAA,A,A]265                                           // ENCLE: lwpc $2, foo # encoding: [A,A,0b01001AAA,0xec]266                                           // FIXUP: # fixup A - offset: 0, value: foo, kind: fixup_MIPS_PC19_S2267 268// DATA-NEXT:  00D0: EC480000 24620000 24620000 00000000269        addiu $2, $3, %pcrel_hi(foo)       // RELOC: R_MIPS_PCHI16 foo270                                           // ENCBE: addiu $2, $3, %pcrel_hi(foo) # encoding: [0x24,0x62,A,A]271                                           // ENCLE: addiu $2, $3, %pcrel_hi(foo) # encoding: [A,A,0x62,0x24]272                                           // FIXUP: # fixup A - offset: 0, value: %pcrel_hi(foo), kind: fixup_MIPS_PCHI16273 274        addiu $2, $3, %pcrel_lo(foo)       // RELOC: R_MIPS_PCLO16 foo275                                           // ENCBE: addiu $2, $3, %pcrel_lo(foo) # encoding: [0x24,0x62,A,A]276                                           // ENCLE: addiu $2, $3, %pcrel_lo(foo) # encoding: [A,A,0x62,0x24]277                                           // FIXUP: # fixup A - offset: 0, value: %pcrel_lo(foo), kind: fixup_MIPS_PCLO16278 279        .set mips0280                                           // FIXME: R_MIPS16_*281                                           // ?????: R_MIPS_COPY foo282                                           // ?????: R_MIPS_JUMP_SLOT foo283                                           // FIXME: R_MICROMIPS_*284        .long foo-.                        // RELOC: R_MIPS_PC32 foo285//      .ehword foo                        // FIXME: R_MIPS_EH foo286 287	.data288	.word 0289bar:290	.word 1291 292        .section .text_mm, "ax", @progbits293        .set micromips294mm:295// RELOC-LABEL: .rel.text_mm {296// ENCBE-LABEL: mm:297// ENCLE-LABEL: mm:298// DATA-LABEL: Name: .text_mm299// DATA:       SectionData (300 301// DATA-NEXT:  0000: 30430000 30420000 30430000 30420004302        addiu $2, $3, %got(foo_mm)         // RELOC: R_MICROMIPS_GOT16 foo_mm303                                           // ENCBE: addiu $2, $3, %got(foo_mm) # encoding: [0x30,0x43,A,A]304                                           // The placement of the 'A' annotations is incorrect. They use 32-bit little endian instead of 2x 16-bit little endian.305                                           // ENCLE: addiu $2, $3, %got(foo_mm) # encoding: [0x43'A',0x30'A',0x00,0x00]306                                           // FIXUP: # fixup A - offset: 0, value: %got(foo_mm), kind: fixup_MICROMIPS_GOT16307        // %got requires a %lo pair308        addiu $2, $2, %lo(foo_mm)          // RELOC: R_MICROMIPS_LO16 foo_mm309                                           // ENCBE: addiu $2, $2, %lo(foo_mm) # encoding: [0x30,0x42,A,A]310                                           // ENCLE: addiu $2, $2, %lo(foo_mm) # encoding: [0x42'A',0x30'A',0x00,0x00]311                                           // FIXUP: # fixup A - offset: 0, value: %lo(foo_mm), kind: fixup_MICROMIPS_LO16312 313foo_mm:314        addiu $2, $3, %got(bar)            // RELOC: R_MICROMIPS_GOT16 .data315                                           // ENCBE: addiu $2, $3, %got(bar) # encoding: [0x30,0x43,A,A]316                                           // ENCLE: addiu $2, $3, %got(bar) # encoding: [0x43'A',0x30'A',0x00,0x00]317                                           // FIXUP: # fixup A - offset: 0, value: %got(bar), kind: fixup_MICROMIPS_GOT16318        // %got requires a %lo pair319        addiu $2, $2, %lo(bar)             // RELOC: R_MICROMIPS_LO16 .data320                                           // ENCBE: addiu $2, $2, %lo(bar) # encoding: [0x30,0x42,A,A]321                                           // ENCLE: addiu $2, $2, %lo(bar) # encoding: [0x42'A',0x30'A',0x00,0x00]322                                           // FIXUP: # fixup A - offset: 0, value: %lo(bar), kind: fixup_MICROMIPS_LO16323 324// DATA-NEXT:  0010: 30430000 30420004 30430001 3042003C325        addiu $2, $3, %got(baz)            // RELOC: R_MICROMIPS_GOT16 .text326                                           // ENCBE: addiu $2, $3, %got(baz) # encoding: [0x30,0x43,A,A]327                                           // The placement of the 'A' annotations is incorrect. They use 32-bit little endian instead of 2x 16-bit little endian.328                                           // ENCLE: addiu $2, $3, %got(baz) # encoding: [0x43'A',0x30'A',0x00,0x00]329                                           // FIXUP: # fixup A - offset: 0, value: %got(baz), kind: fixup_MICROMIPS_GOT16330        // %got requires a %lo pair331        addiu $2, $2, %lo(baz)             // RELOC: R_MICROMIPS_LO16 .text332                                           // ENCBE: addiu $2, $2, %lo(baz) # encoding: [0x30,0x42,A,A]333                                           // ENCLE: addiu $2, $2, %lo(baz) # encoding: [0x42'A',0x30'A',0x00,0x00]334                                           // FIXUP: # fixup A - offset: 0, value: %lo(baz), kind: fixup_MICROMIPS_LO16335 336        addiu $2, $3, %got(long_mm)        // RELOC: R_MICROMIPS_GOT16 .text337                                           // ENCBE: addiu $2, $3, %got(long_mm) # encoding: [0x30,0x43,A,A]338                                           // The placement of the 'A' annotations is incorrect. They use 32-bit little endian instead of 2x 16-bit little endian.339                                           // ENCLE: addiu $2, $3, %got(long_mm) # encoding: [0x43'A',0x30'A',0x00,0x00]340                                           // FIXUP: # fixup A - offset: 0, value: %got(long_mm), kind: fixup_MICROMIPS_GOT16341        // %got requires a %lo pair342        addiu $2, $2, %lo(long_mm)         // RELOC: R_MICROMIPS_LO16 .text343                                           // ENCBE: addiu $2, $2, %lo(long_mm) # encoding: [0x30,0x42,A,A]344                                           // ENCLE: addiu $2, $2, %lo(long_mm) # encoding: [0x42'A',0x30'A',0x00,0x00]345                                           // FIXUP: # fixup A - offset: 0, value: %lo(long_mm), kind: fixup_MICROMIPS_LO16346 347// DATA-NEXT:  0020: 30430004 00000000 30430004 00000000348        addiu $2, $3, %got_page(bar)       // RELOC: R_MICROMIPS_GOT_PAGE .data349                                           // ENCBE: addiu $2, $3, %got_page(bar) # encoding: [0x30,0x43,A,A]350                                           // The placement of the 'A' annotations is incorrect. They use 32-bit little endian instead of 2x 16-bit little endian.351                                           // ENCLE: addiu $2, $3, %got_page(bar) # encoding: [0x43'A',0x30'A',0x00,0x00]352                                           // FIXUP: # fixup A - offset: 0, value: %got_page(bar), kind: fixup_MICROMIPS_GOT_PAGE353        nop354 355        addiu $2, $3, %got_ofst(bar)       // RELOC: R_MICROMIPS_GOT_OFST .data356                                           // ENCBE: addiu $2, $3, %got_ofst(bar) # encoding: [0x30,0x43,A,A]357                                           // The placement of the 'A' annotations is incorrect. They use 32-bit little endian instead of 2x 16-bit little endian.358                                           // ENCLE: addiu $2, $3, %got_ofst(bar) # encoding: [0x43'A',0x30'A',0x00,0x00]359                                           // FIXUP: # fixup A - offset: 0, value: %got_ofst(bar), kind: fixup_MICROMIPS_GOT_OFST360        nop361 362// DATA-NEXT:  0030: 30430000 30420000 30430000 30420004363        addiu $2, $3, %hi(foo_mm)          // RELOC: R_MICROMIPS_HI16 foo_mm364                                           // ENCBE: addiu $2, $3, %hi(foo_mm) # encoding: [0x30,0x43,A,A]365                                           // ENCLE: addiu $2, $3, %hi(foo_mm) # encoding: [0x43'A',0x30'A',0x00,0x00]366                                           // FIXUP: # fixup A - offset: 0, value: %hi(foo_mm), kind: fixup_MICROMIPS_HI16367 368        addiu $2, $2, %lo(foo_mm)          // RELOC: R_MICROMIPS_LO16 foo_mm369                                           // ENCBE: addiu $2, $2, %lo(foo_mm) # encoding: [0x30,0x42,A,A]370                                           // ENCLE: addiu $2, $2, %lo(foo_mm) # encoding: [0x42'A',0x30'A',0x00,0x00]371                                           // FIXUP: # fixup A - offset: 0, value: %lo(foo_mm), kind: fixup_MICROMIPS_LO16372 373        addiu $2, $3, %hi(bar)             // RELOC: R_MICROMIPS_HI16 .data374                                           // ENCBE: addiu $2, $3, %hi(bar) # encoding: [0x30,0x43,A,A]375                                           // ENCLE: addiu $2, $3, %hi(bar) # encoding: [0x43'A',0x30'A',0x00,0x00]376                                           // FIXUP: # fixup A - offset: 0, value: %hi(bar), kind: fixup_MICROMIPS_HI16377 378        addiu $2, $2, %lo(bar)             // RELOC: R_MICROMIPS_LO16 .data379                                           // ENCBE: addiu $2, $2, %lo(bar) # encoding: [0x30,0x42,A,A]380                                           // ENCLE: addiu $2, $2, %lo(bar) # encoding: [0x42'A',0x30'A',0x00,0x00]381                                           // FIXUP: # fixup A - offset: 0, value: %lo(bar), kind: fixup_MICROMIPS_LO16382 383// DATA-NEXT:  0040: 30430000 41A50000 41A50000 00000000384        addiu $2, $3, %gottprel(foo)       // RELOC: R_MICROMIPS_TLS_GOTTPREL foo385                                           // ENCBE: addiu $2, $3, %gottprel(foo) # encoding: [0x30,0x43,A,A]386                                           // ENCLE: addiu $2, $3, %gottprel(foo) # encoding: [0x43'A',0x30'A',0x00,0x00]387                                           // FIXUP: # fixup A - offset: 0, value: %gottprel(foo), kind: fixup_MICROMIPS_GOTTPREL388 389        lui $5, %higher(foo)               // RELOC: R_MICROMIPS_HIGHER foo390                                           // ENCBE: lui $5, %higher(foo) # encoding: [0x41,0xa5,A,A]391                                           // ENCLE: lui $5, %higher(foo) # encoding: [0xa5'A',0x41'A',0x00,0x00]392                                           // FIXUP: # fixup A - offset: 0, value: %higher(foo), kind: fixup_MICROMIPS_HIGHER393 394        lui $5, %highest(foo)              // RELOC: R_MICROMIPS_HIGHEST foo395                                           // ENCBE: lui $5, %highest(foo) # encoding: [0x41,0xa5,A,A]396                                           // ENCLE: lui $5, %highest(foo) # encoding: [0xa5'A',0x41'A',0x00,0x00]397                                           // FIXUP: # fixup A - offset: 0, value: %highest(foo), kind: fixup_MICROMIPS_HIGHEST398 399        .space 65520, 0400long_mm:401