928 lines · plain
1# RUN: llvm-mc %s -triple mips-unknown-linux-gnu -show-encoding |\2# RUN: FileCheck %s -check-prefixes=ALL,MIPS,O323 4# RUN: llvm-mc %s -triple mips-unknown-linux-gnu -mattr=+xgot -show-encoding |\5# RUN: FileCheck %s -check-prefixes=ALL,MIPS,XO326 7# RUN: llvm-mc %s -triple mips64-unknown-linux-gnuabin32 -show-encoding |\8# RUN: FileCheck %s -check-prefixes=ALL,MIPS,N329 10# RUN: llvm-mc %s -triple mips64-unknown-linux-gnuabin32 -mattr=+xgot -show-encoding |\11# RUN: FileCheck %s -check-prefixes=ALL,MIPS,XN3212 13# RUN: llvm-mc %s -triple mips64-unknown-linux-gnu -show-encoding |\14# RUN: FileCheck %s -check-prefixes=ALL,MIPS,N6415 16# RUN: llvm-mc %s -triple mips64-unknown-linux-gnu -mattr=+xgot -show-encoding |\17# RUN: FileCheck %s -check-prefixes=ALL,MIPS,XN6418 19# RUN: llvm-mc %s -triple mips-unknown-linux-gnu -mattr=micromips -show-encoding |\20# RUN: FileCheck %s -check-prefixes=ALL,MM,O32-MM21 22# Repeat the tests but using ELF output. An initial version of this patch did23# this as the output different depending on whether it went through24# MCAsmStreamer or MCELFStreamer. This ensures that the assembly expansion and25# direct objection emission match.26 27# RUN: llvm-mc %s -triple mips-unknown-linux-gnu -filetype=obj | \28# RUN: llvm-objdump --no-print-imm-hex -d -r - | FileCheck %s --check-prefixes=ELF-O3229# RUN: llvm-mc %s -triple mips-unknown-linux-gnu -mattr=+xgot -filetype=obj | \30# RUN: llvm-objdump --no-print-imm-hex -d -r - | FileCheck %s --check-prefixes=ELF-XO3231# RUN: llvm-mc %s -triple mips64-unknown-linux-gnuabin32 -filetype=obj | \32# RUN: llvm-objdump --no-print-imm-hex -d -r - | FileCheck %s --check-prefixes=ELF-N3233# RUN: llvm-mc %s -triple mips64-unknown-linux-gnuabin32 -mattr=+xgot -filetype=obj | \34# RUN: llvm-objdump --no-print-imm-hex -d -r - | FileCheck %s --check-prefixes=ELF-XN3235# RUN: llvm-mc %s -triple mips64-unknown-linux-gnu -filetype=obj | \36# RUN: llvm-objdump --no-print-imm-hex -d -r - | FileCheck %s --check-prefixes=ELF-N6437# RUN: llvm-mc %s -triple mips64-unknown-linux-gnu -mattr=+xgot -filetype=obj | \38# RUN: llvm-objdump --no-print-imm-hex -d -r - | FileCheck %s --check-prefixes=ELF-XN6439 40 .weak weak_label41 42 .text43 .option pic244 45 .ent local_label46local_label:47 .frame $sp, 0, $ra48 .set noreorder49 50 jal local_label51 nop52 53# Expanding "jal local_label":54# O32: lw $25, %got(local_label)($gp) # encoding: [0x8f,0x99,A,A]55# O32: # fixup A - offset: 0, value: %got(local_label), kind: fixup_Mips_GOT56# O32: addiu $25, $25, %lo(local_label) # encoding: [0x27,0x39,A,A]57# O32: # fixup A - offset: 0, value: %lo(local_label), kind: fixup_Mips_LO1658# O32-NEXT: .reloc $tmp0, R_MIPS_JALR, local_label59 60# ELF-O32: 8f 99 00 00 lw $25, 0($gp)61# ELF-O32-NEXT: R_MIPS_GOT16 .text62# ELF-O32-NEXT: 27 39 00 00 addiu $25, $25, 063# ELF-O32-NEXT: R_MIPS_LO16 .text64# ELF-O32-NEXT: 03 20 f8 09 jalr $2565# ELF-O32-NEXT: R_MIPS_JALR local_label66 67# XO32: lw $25, %got(local_label)($gp) # encoding: [0x8f,0x99,A,A]68# XO32-NEXT: # fixup A - offset: 0, value: %got(local_label), kind: fixup_Mips_GOT69# XO32-NEXT: addiu $25, $25, %lo(local_label) # encoding: [0x27,0x39,A,A]70# XO32-NEXT: # fixup A - offset: 0, value: %lo(local_label), kind: fixup_Mips_LO1671# XO32-NEXT: .reloc $tmp0, R_MIPS_JALR, local_label72 73# ELF-XO32: 8f 99 00 00 lw $25, 0($gp)74# ELF-XO32-NEXT: R_MIPS_GOT16 .text75# ELF-XO32-NEXT: 27 39 00 00 addiu $25, $25, 076# ELF-XO32-NEXT: R_MIPS_LO16 .text77# ELF-XO32-NEXT: 03 20 f8 09 jalr $2578# ELF-XO32-NEXT: R_MIPS_JALR local_label79 80# N32: lw $25, %got_disp(local_label)($gp) # encoding: [0x8f,0x99,A,A]81# N32: # fixup A - offset: 0, value: %got_disp(local_label), kind: fixup_Mips_GOT_DISP82# N32-NEXT: .reloc .Ltmp0, R_MIPS_JALR, local_label83 84# ELF-N32: 8f 99 00 00 lw $25, 0($gp)85# ELF-N32-NEXT: R_MIPS_GOT_DISP local_label86# ELF-N32-NEXT: 03 20 f8 09 jalr $2587# ELF-N32-NEXT: R_MIPS_JALR local_label88 89# XN32: lw $25, %got_disp(local_label)($gp) # encoding: [0x8f,0x99,A,A]90# XN32-NEXT: # fixup A - offset: 0, value: %got_disp(local_label), kind: fixup_Mips_GOT_DISP91# XN32-NEXT: .reloc .Ltmp0, R_MIPS_JALR, local_label92 93# ELF-XN32: 8f 99 00 00 lw $25, 0($gp)94# ELF-XN32-NEXT: R_MIPS_GOT_DISP local_label95# ELF-XN32-NEXT: 03 20 f8 09 jalr $2596# ELF-XN32-NEXT: R_MIPS_JALR local_label97 98# N64: ld $25, %got_disp(local_label)($gp) # encoding: [0xdf,0x99,A,A]99# N64: # fixup A - offset: 0, value: %got_disp(local_label), kind: fixup_Mips_GOT_DISP100# N64-NEXT: .reloc .Ltmp0, R_MIPS_JALR, local_label101 102# ELF-N64: df 99 00 00 ld $25, 0($gp)103# ELF-N64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE local_label104# ELF-N64-NEXT: 03 20 f8 09 jalr $25105# ELF-N64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE local_label106 107# XN64: ld $25, %got_disp(local_label)($gp) # encoding: [0xdf,0x99,A,A]108# XN64-NEXT: # fixup A - offset: 0, value: %got_disp(local_label), kind: fixup_Mips_GOT_DISP109# XN64-NEXT: .reloc .Ltmp0, R_MIPS_JALR, local_label110 111# ELF-XN64: df 99 00 00 ld $25, 0($gp)112# ELF-XN64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE local_label113# ELF-XN64-NEXT: 03 20 f8 09 jalr $25114# ELF-XN64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE local_label115 116# O32-MM: lw $25, %got(local_label)($gp) # encoding: [0xff,0x3c,A,A]117# O32-MM: # fixup A - offset: 0, value: %got(local_label), kind: fixup_MICROMIPS_GOT16118# O32-MM: addiu $25, $25, %lo(local_label) # encoding: [0x33,0x39,A,A]119# O32-MM: # fixup A - offset: 0, value: %lo(local_label), kind: fixup_MICROMIPS_LO16120# O32-MM-NEXT: .reloc $tmp0, R_MICROMIPS_JALR, local_label121 122# MIPS: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]123# MM: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]124# ALL: nop # encoding: [0x00,0x00,0x00,0x00]125 126 jal local_label+8127 nop128 129# O32: lw $25, %got(local_label+8)($gp) # encoding: [0x8f,0x99,A,A]130# O32-NEXT: # fixup A - offset: 0, value: %got(local_label+8), kind: fixup_Mips_GOT131# O32-NEXT: addiu $25, $25, %lo(local_label+8) # encoding: [0x27,0x39,A,A]132# O32-NEXT: # fixup A - offset: 0, value: %lo(local_label+8), kind: fixup_Mips_LO16133# O32-NOT: .reloc134 135# ELF-O32: 8f 99 00 00 lw $25, 0($gp)136# ELF-O32-NEXT: R_MIPS_GOT16 .text137# ELF-O32-NEXT: 27 39 00 08 addiu $25, $25, 8138# ELF-O32-NEXT: R_MIPS_LO16 .text139# ELF-O32-NEXT: 03 20 f8 09 jalr $25140# ELF-O32-NEXT: 00 00 00 00 nop141 142# XO32: lw $25, %got(local_label+8)($gp) # encoding: [0x8f,0x99,A,A]143# XO32-NEXT: # fixup A - offset: 0, value: %got(local_label+8), kind: fixup_Mips_GOT144# XO32-NEXT: addiu $25, $25, %lo(local_label+8) # encoding: [0x27,0x39,A,A]145# XO32-NEXT: # fixup A - offset: 0, value: %lo(local_label+8), kind: fixup_Mips_LO16146# XO32-NOT: .reloc147 148# ELF-XO32: 8f 99 00 00 lw $25, 0($gp)149# ELF-XO32-NEXT: R_MIPS_GOT16 .text150# ELF-XO32-NEXT: 27 39 00 08 addiu $25, $25, 8151# ELF-XO32-NEXT: R_MIPS_LO16 .text152# ELF-XO32-NEXT: 03 20 f8 09 jalr $25153# ELF-XO32-NEXT: 00 00 00 00 nop154 155# N32: lw $25, %got_disp(local_label)($gp) # encoding: [0x8f,0x99,A,A]156# N32-NEXT: # fixup A - offset: 0, value: %got_disp(local_label), kind: fixup_Mips_GOT_DISP157# N32-NEXT: addiu $25, $25, 8 # encoding: [0x27,0x39,0x00,0x08]158# N32-NEXT: .reloc .Ltmp1, R_MIPS_JALR, local_label159 160# ELF-N32: 8f 99 00 00 lw $25, 0($gp)161# ELF-N32-NEXT: R_MIPS_GOT_DISP local_label162# ELF-N32-NEXT: 27 39 00 08 addiu $25, $25, 8163# ELF-N32-NEXT: 03 20 f8 09 jalr $25164# ELF-N32-NEXT: R_MIPS_JALR local_label165 166# XN32: lw $25, %got_disp(local_label)($gp) # encoding: [0x8f,0x99,A,A]167# XN32-NEXT: # fixup A - offset: 0, value: %got_disp(local_label), kind: fixup_Mips_GOT_DISP168# XN32-NEXT: addiu $25, $25, 8 # encoding: [0x27,0x39,0x00,0x08]169# XN32-NEXT: .reloc .Ltmp1, R_MIPS_JALR, local_label170 171# ELF-XN32: 8f 99 00 00 lw $25, 0($gp)172# ELF-XN32-NEXT: R_MIPS_GOT_DISP local_label173# ELF-XN32-NEXT: 27 39 00 08 addiu $25, $25, 8174# ELF-XN32-NEXT: 03 20 f8 09 jalr $25175# ELF-XN32-NEXT: R_MIPS_JALR local_label176 177# N64: ld $25, %got_disp(local_label)($gp) # encoding: [0xdf,0x99,A,A]178# N64-NEXT: # fixup A - offset: 0, value: %got_disp(local_label), kind: fixup_Mips_GOT_DISP179# N64-NEXT: daddiu $25, $25, 8 # encoding: [0x67,0x39,0x00,0x08]180# N64-NEXT: .reloc .Ltmp1, R_MIPS_JALR, local_label181 182# ELF-N64: df 99 00 00 ld $25, 0($gp)183# ELF-N64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE local_label184# ELF-N64-NEXT: 67 39 00 08 daddiu $25, $25, 8185# ELF-N64-NEXT: 03 20 f8 09 jalr $25186# ELF-N64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE local_label187 188# XN64: ld $25, %got_disp(local_label)($gp) # encoding: [0xdf,0x99,A,A]189# XN64-NEXT: # fixup A - offset: 0, value: %got_disp(local_label), kind: fixup_Mips_GOT_DISP190# XN64-NEXT: daddiu $25, $25, 8 # encoding: [0x67,0x39,0x00,0x08]191# XN64-NEXT: .reloc .Ltmp1, R_MIPS_JALR, local_label192 193# ELF-XN64: df 99 00 00 ld $25, 0($gp)194# ELF-XN64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE local_label195# ELF-XN64-NEXT: 67 39 00 08 daddiu $25, $25, 8196# ELF-XN64-NEXT: 03 20 f8 09 jalr $25197# ELF-XN64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE local_label198 199# O32-MM: lw $25, %got(local_label+8)($gp) # encoding: [0xff,0x3c,A,A]200# O32-MM-NEXT: # fixup A - offset: 0, value: %got(local_label+8), kind: fixup_MICROMIPS_GOT16201# O32-MM-NEXT: addiu $25, $25, %lo(local_label+8) # encoding: [0x33,0x39,A,A]202# O32-MM-NEXT: # fixup A - offset: 0, value: %lo(local_label+8), kind: fixup_MICROMIPS_LO16203# O32-MM-NOT: .reloc204 205# MIPS: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]206# MM: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]207# ALL: nop # encoding: [0x00,0x00,0x00,0x00]208 209 jal weak_label210 nop211 212# Expanding "jal weak_label":213# O32: lw $25, %call16(weak_label)($gp) # encoding: [0x8f,0x99,A,A]214# O32: # fixup A - offset: 0, value: %call16(weak_label), kind: fixup_Mips_CALL16215# O32-NEXT: .reloc $tmp1, R_MIPS_JALR, weak_label216 217# ELF-O32: 8f 99 00 00 lw $25, 0($gp)218# ELF-O32-NEXT: R_MIPS_CALL16 weak_label219# ELF-O32-NEXT: 03 20 f8 09 jalr $25220# ELF-O32-NEXT: R_MIPS_JALR weak_label221 222# XO32: lui $25, %call_hi(weak_label) # encoding: [0x3c,0x19,A,A]223# XO32-NEXT: # fixup A - offset: 0, value: %call_hi(weak_label), kind: fixup_Mips_CALL_HI16224# XO32-NEXT: addu $25, $25, $gp # encoding: [0x03,0x3c,0xc8,0x21]225# XO32-NEXT: lw $25, %call_lo(weak_label)($25) # encoding: [0x8f,0x39,A,A]226# XO32-NEXT: # fixup A - offset: 0, value: %call_lo(weak_label), kind: fixup_Mips_CALL_LO16227# XO32-NEXT: .reloc $tmp1, R_MIPS_JALR, weak_label228 229# ELF-XO32: 3c 19 00 00 lui $25, 0230# ELF-XO32-MEXT: R_MIPS_CALL_HI16 weak_label231# ELF-XO32-MEXT: 03 3c c8 21 addu $25, $25, $gp232# ELF-XO32-MEXT: 8f 39 00 00 lw $25, 0($25)233# ELF-XO32-MEXT: R_MIPS_CALL_LO16 weak_label234# ELF-XO32-MEXT: 03 20 f8 09 jalr $25235# ELF-XO32-MEXT: R_MIPS_JALR weak_label236 237# N32: lw $25, %call16(weak_label)($gp) # encoding: [0x8f,0x99,A,A]238# N32: # fixup A - offset: 0, value: %call16(weak_label), kind: fixup_Mips_CALL16239# N32-NEXT: .reloc .Ltmp2, R_MIPS_JALR, weak_label240 241# ELF-N32: 8f 99 00 00 lw $25, 0($gp)242# ELF-N32-NEXT: R_MIPS_CALL16 weak_label243# ELF-N32-NEXT: 03 20 f8 09 jalr $25244# ELF-N32-NEXT: R_MIPS_JALR weak_label245 246# XN32: lui $25, %call_hi(weak_label) # encoding: [0x3c,0x19,A,A]247# XN32-NEXT: # fixup A - offset: 0, value: %call_hi(weak_label), kind: fixup_Mips_CALL_HI16248# XN32-NEXT: addu $25, $25, $gp # encoding: [0x03,0x3c,0xc8,0x21]249# XN32-NEXT: lw $25, %call_lo(weak_label)($25) # encoding: [0x8f,0x39,A,A]250# XN32-NEXT: # fixup A - offset: 0, value: %call_lo(weak_label), kind: fixup_Mips_CALL_LO16251# XN32-NEXT: .reloc .Ltmp2, R_MIPS_JALR, weak_label252 253# ELF-XN32: 3c 19 00 00 lui $25, 0254# ELF-XN32-NEXT: R_MIPS_CALL_HI16 weak_label255# ELF-XN32-NEXT: 03 3c c8 21 addu $25, $25, $gp256# ELF-XN32-NEXT: 8f 39 00 00 lw $25, 0($25)257# ELF-XN32-NEXT: R_MIPS_CALL_LO16 weak_label258# ELF-XN32-NEXT: 03 20 f8 09 jalr $25259# ELF-XN32-NEXT: R_MIPS_JALR weak_label260 261# N64: ld $25, %call16(weak_label)($gp) # encoding: [0xdf,0x99,A,A]262# N64: # fixup A - offset: 0, value: %call16(weak_label), kind: fixup_Mips_CALL16263# N64-NEXT: .reloc .Ltmp2, R_MIPS_JALR, weak_label264 265# ELF-N64: df 99 00 00 ld $25, 0($gp)266# ELF-N64-NEXT: R_MIPS_CALL16/R_MIPS_NONE/R_MIPS_NONE weak_label267# ELF-N64-NEXT: 03 20 f8 09 jalr $25268# ELF-N64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE weak_label269 270# XN64: lui $25, %call_hi(weak_label) # encoding: [0x3c,0x19,A,A]271# XN64-NEXT: # fixup A - offset: 0, value: %call_hi(weak_label), kind: fixup_Mips_CALL_HI16272# XN64-NEXT: daddu $25, $25, $gp # encoding: [0x03,0x3c,0xc8,0x2d]273# XN64-NEXT: ld $25, %call_lo(weak_label)($25) # encoding: [0xdf,0x39,A,A]274# XN64-NEXT: # fixup A - offset: 0, value: %call_lo(weak_label), kind: fixup_Mips_CALL_LO16275# XN64-NEXT: .reloc .Ltmp2, R_MIPS_JALR, weak_label276 277# ELF-XN64: 3c 19 00 00 lui $25, 0278# ELF-XN64-NEXT: R_MIPS_CALL_HI16/R_MIPS_NONE/R_MIPS_NONE weak_label279# ELF-XN64-NEXT: 03 3c c8 2d daddu $25, $25, $gp280# ELF-XN64-NEXT: df 39 00 00 ld $25, 0($25)281# ELF-XN64-NEXT: R_MIPS_CALL_LO16/R_MIPS_NONE/R_MIPS_NONE weak_label282# ELF-XN64-NEXT: 03 20 f8 09 jalr $25283# ELF-XN64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE weak_label284 285# O32-MM: lw $25, %call16(weak_label)($gp) # encoding: [0xff,0x3c,A,A]286# O32-MM: # fixup A - offset: 0, value: %call16(weak_label), kind: fixup_MICROMIPS_CALL16287# O32-MM-NEXT: .reloc $tmp1, R_MICROMIPS_JALR, weak_label288 289# MIPS: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]290# MM: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]291# ALL: nop # encoding: [0x00,0x00,0x00,0x00]292 293 jal weak_label+8294 nop295 296# O32: lw $25, %got(weak_label)($gp) # encoding: [0x8f,0x99,A,A]297# O32-NEXT: # fixup A - offset: 0, value: %got(weak_label), kind: fixup_Mips_GOT298# O32-NEXT: addiu $25, $25, 8 # encoding: [0x27,0x39,0x00,0x08]299# O32-NOT: .reloc300 301# ELF-O32: 8f 99 00 00 lw $25, 0($gp)302# ELF-O32-NEXT: R_MIPS_GOT16 weak_label303# ELF-O32-NEXT: 27 39 00 08 addiu $25, $25, 8304# ELF-O32-NEXT: 03 20 f8 09 jalr $25305# ELF-O32-NEXT: 00 00 00 00 nop306 307# XO32: lui $25, %got_hi(weak_label+8) # encoding: [0x3c,0x19,A,A]308# XO32-NEXT: # fixup A - offset: 0, value: %got_hi(weak_label+8), kind: fixup_Mips_GOT_HI16309# XO32-NEXT: addu $25, $25, $gp # encoding: [0x03,0x3c,0xc8,0x21]310# XO32-NEXT: lw $25, %got_lo(weak_label)($25) # encoding: [0x8f,0x39,A,A]311# XO32-NEXT: # fixup A - offset: 0, value: %got_lo(weak_label), kind: fixup_Mips_GOT_LO16312# XO32-NEXT: addiu $25, $25, 8 # encoding: [0x27,0x39,0x00,0x08]313# XO32-NOT: .reloc314 315# ELF-XO32: 3c 19 00 00 lui $25, 0316# ELF-XO32-NEXT: R_MIPS_GOT_HI16 weak_label317# ELF-XO32-NEXT: 03 3c c8 21 addu $25, $25, $gp318# ELF-XO32-NEXT: 8f 39 00 00 lw $25, 0($25)319# ELF-XO32-NEXT: R_MIPS_GOT_LO16 weak_label320# ELF-XO32-NEXT: 27 39 00 08 addiu $25, $25, 8321# ELF-XO32-NEXT: 03 20 f8 09 jalr $25322# ELF-XO32-NEXT: 00 00 00 00 nop323 324# N32: lw $25, %got_disp(weak_label)($gp) # encoding: [0x8f,0x99,A,A]325# N32-NEXT: # fixup A - offset: 0, value: %got_disp(weak_label), kind: fixup_Mips_GOT_DISP326# N32-NEXT: addiu $25, $25, 8 # encoding: [0x27,0x39,0x00,0x08]327# N32-NEXT: .reloc .Ltmp3, R_MIPS_JALR, weak_label328 329# ELF-N32: 8f 99 00 00 lw $25, 0($gp)330# ELF-N32-NEXT: R_MIPS_GOT_DISP weak_label331# ELF-N32-NEXT: 27 39 00 08 addiu $25, $25, 8332# ELF-N32-NEXT: 03 20 f8 09 jalr $25333# ELF-N32-NEXT: R_MIPS_JALR weak_label334 335# XN32: lui $25, %got_hi(weak_label+8) # encoding: [0x3c,0x19,A,A]336# XN32-NEXT: # fixup A - offset: 0, value: %got_hi(weak_label+8), kind: fixup_Mips_GOT_HI16337# XN32-NEXT: addu $25, $25, $gp # encoding: [0x03,0x3c,0xc8,0x21]338# XN32-NEXT: lw $25, %got_lo(weak_label)($25) # encoding: [0x8f,0x39,A,A]339# XN32-NEXT: # fixup A - offset: 0, value: %got_lo(weak_label), kind: fixup_Mips_GOT_LO16340# XN32-NEXT: addiu $25, $25, 8 # encoding: [0x27,0x39,0x00,0x08]341# XN32-NEXT: .reloc .Ltmp3, R_MIPS_JALR, weak_label342 343# ELF-XN32: 3c 19 00 00 lui $25, 0344# ELF-XN32-NEXT: R_MIPS_GOT_HI16 weak_label+0x8345# ELF-XN32-NEXT: 03 3c c8 21 addu $25, $25, $gp346# ELF-XN32-NEXT: 8f 39 00 00 lw $25, 0($25)347# ELF-XN32-NEXT: R_MIPS_GOT_LO16 weak_label348# ELF-XN32-NEXT: 27 39 00 08 addiu $25, $25, 8349# ELF-XN32-NEXT: 03 20 f8 09 jalr $25350# ELF-XN32-NEXT: R_MIPS_JALR weak_label351 352# N64: ld $25, %got_disp(weak_label)($gp) # encoding: [0xdf,0x99,A,A]353# N64: # fixup A - offset: 0, value: %got_disp(weak_label), kind: fixup_Mips_GOT_DISP354# N64-NEXT: daddiu $25, $25, 8 # encoding: [0x67,0x39,0x00,0x08]355# N64-NEXT: .reloc .Ltmp3, R_MIPS_JALR, weak_label356 357# ELF-N64: df 99 00 00 ld $25, 0($gp)358# ELF-N64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE weak_label359# ELF-N64-NEXT: 67 39 00 08 daddiu $25, $25, 8360# ELF-N64-NEXT: 03 20 f8 09 jalr $25361# ELF-N64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE weak_label362 363# XN64: lui $25, %got_hi(weak_label+8) # encoding: [0x3c,0x19,A,A]364# XN64-NEXT: # fixup A - offset: 0, value: %got_hi(weak_label+8), kind: fixup_Mips_GOT_HI16365# XN64-NEXT: daddu $25, $25, $gp # encoding: [0x03,0x3c,0xc8,0x2d]366# XN64-NEXT: ld $25, %got_lo(weak_label)($25) # encoding: [0xdf,0x39,A,A]367# XN64-NEXT: # fixup A - offset: 0, value: %got_lo(weak_label), kind: fixup_Mips_GOT_LO16368# XN64-NEXT: daddiu $25, $25, 8 # encoding: [0x67,0x39,0x00,0x08]369# XN64-NEXT: .reloc .Ltmp3, R_MIPS_JALR, weak_label370 371# ELF-XN64: 3c 19 00 00 lui $25, 0372# ELF-XN64-NEXT: R_MIPS_GOT_HI16/R_MIPS_NONE/R_MIPS_NONE weak_label+0x8373# ELF-XN64-NEXT: 03 3c c8 2d daddu $25, $25, $gp374# ELF-XN64-NEXT: df 39 00 00 ld $25, 0($25)375# ELF-XN64-NEXT: R_MIPS_GOT_LO16/R_MIPS_NONE/R_MIPS_NONE weak_label376# ELF-XN64-NEXT: 67 39 00 08 daddiu $25, $25, 8377# ELF-XN64-NEXT: 03 20 f8 09 jalr $25378# ELF-XN64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE weak_label379 380# O32-MM: lw $25, %got(weak_label)($gp) # encoding: [0xff,0x3c,A,A]381# O32-MM-NEXT: # fixup A - offset: 0, value: %got(weak_label), kind: fixup_MICROMIPS_GOT16382# O32-MM-NEXT: addiu $25, $25, 8 # encoding: [0x33,0x39,0x00,0x08]383# O32-MM-NOT: .reloc384 385# MIPS: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]386# MM: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]387# ALL: nop # encoding: [0x00,0x00,0x00,0x00]388 389 jal global_label390 nop391 392# Expanding "jal global_label":393# O32: lw $25, %call16(global_label)($gp) # encoding: [0x8f,0x99,A,A]394# O32-NEXT: # fixup A - offset: 0, value: %call16(global_label), kind: fixup_Mips_CALL16395# O32-NEXT: .reloc $tmp2, R_MIPS_JALR, global_label396 397# ELF-O32: 8f 99 00 00 lw $25, 0($gp)398# ELF-O32-NEXT: R_MIPS_CALL16 global_label399# ELF-O32-NEXT: 03 20 f8 09 jalr $25400# ELF-O32-NEXT: R_MIPS_JALR global_label401 402# XO32: lui $25, %call_hi(global_label) # encoding: [0x3c,0x19,A,A]403# XO32-NEXT: # fixup A - offset: 0, value: %call_hi(global_label), kind: fixup_Mips_CALL_HI16404# XO32-NEXT: addu $25, $25, $gp # encoding: [0x03,0x3c,0xc8,0x21]405# XO32-NEXT: lw $25, %call_lo(global_label)($25) # encoding: [0x8f,0x39,A,A]406# XO32-NEXT: # fixup A - offset: 0, value: %call_lo(global_label), kind: fixup_Mips_CALL_LO16407# XO32-NEXT: .reloc $tmp2, R_MIPS_JALR, global_label408 409# ELF-XO32: 3c 19 00 00 lui $25, 0410# ELF-XO32-NEXT: R_MIPS_CALL_HI16 global_label411# ELF-XO32-NEXT: 03 3c c8 21 addu $25, $25, $gp412# ELF-XO32-NEXT: 8f 39 00 00 lw $25, 0($25)413# ELF-XO32-NEXT: R_MIPS_CALL_LO16 global_label414# ELF-XO32-NEXT: 03 20 f8 09 jalr $25415# ELF-XO32-NEXT: R_MIPS_JALR global_label416 417# N32: lw $25, %call16(global_label)($gp) # encoding: [0x8f,0x99,A,A]418# N32-NEXT: # fixup A - offset: 0, value: %call16(global_label), kind: fixup_Mips_CALL16419# N32-NEXT: .reloc .Ltmp4, R_MIPS_JALR, global_label420 421# ELF-N32: 8f 99 00 00 lw $25, 0($gp)422# ELF-N32-NEXT: R_MIPS_CALL16 global_label423# ELF-N32-NEXT: 03 20 f8 09 jalr $25424# ELF-N32-NEXT: R_MIPS_JALR global_label425 426# XN32: lui $25, %call_hi(global_label) # encoding: [0x3c,0x19,A,A]427# XN32-NEXT: # fixup A - offset: 0, value: %call_hi(global_label), kind: fixup_Mips_CALL_HI16428# XN32-NEXT: addu $25, $25, $gp # encoding: [0x03,0x3c,0xc8,0x21]429# XN32-NEXT: lw $25, %call_lo(global_label)($25) # encoding: [0x8f,0x39,A,A]430# XN32-NEXT: # fixup A - offset: 0, value: %call_lo(global_label), kind: fixup_Mips_CALL_LO16431# XN32-NEXT: .reloc .Ltmp4, R_MIPS_JALR, global_label432 433# ELF-XN32: 3c 19 00 00 lui $25, 0434# ELF-XN32-NEXT: R_MIPS_CALL_HI16 global_label435# ELF-XN32-NEXT: 03 3c c8 21 addu $25, $25, $gp436# ELF-XN32-NEXT: 8f 39 00 00 lw $25, 0($25)437# ELF-XN32-NEXT: R_MIPS_CALL_LO16 global_label438# ELF-XN32-NEXT: 03 20 f8 09 jalr $25439# ELF-XN32-NEXT: R_MIPS_JALR global_label440 441# N64: ld $25, %call16(global_label)($gp) # encoding: [0xdf,0x99,A,A]442# N64-NEXT: # fixup A - offset: 0, value: %call16(global_label), kind: fixup_Mips_CALL16443# N64-NEXT: .reloc .Ltmp4, R_MIPS_JALR, global_label444 445# ELF-N64: df 99 00 00 ld $25, 0($gp)446# ELF-N64-NEXT: R_MIPS_CALL16/R_MIPS_NONE/R_MIPS_NONE global_label447# ELF-N64-NEXT: 03 20 f8 09 jalr $25448# ELF-N64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE global_label449 450# XN64: lui $25, %call_hi(global_label) # encoding: [0x3c,0x19,A,A]451# XN64-NEXT: # fixup A - offset: 0, value: %call_hi(global_label), kind: fixup_Mips_CALL_HI16452# XN64-NEXT: daddu $25, $25, $gp # encoding: [0x03,0x3c,0xc8,0x2d]453# XN64-NEXT: ld $25, %call_lo(global_label)($25) # encoding: [0xdf,0x39,A,A]454# XN64-NEXT: # fixup A - offset: 0, value: %call_lo(global_label), kind: fixup_Mips_CALL_LO16455# XN64-NEXT: .reloc .Ltmp4, R_MIPS_JALR, global_label456 457# ELF-XN64: 3c 19 00 00 lui $25, 0458# ELF-XN64-NEXT: R_MIPS_CALL_HI16/R_MIPS_NONE/R_MIPS_NONE global_label459# ELF-XN64-NEXT: 03 3c c8 2d daddu $25, $25, $gp460# ELF-XN64-NEXT: df 39 00 00 ld $25, 0($25)461# ELF-XN64-NEXT: R_MIPS_CALL_LO16/R_MIPS_NONE/R_MIPS_NONE global_label462# ELF-XN64-NEXT: 03 20 f8 09 jalr $25463# ELF-XN64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE global_label464 465# O32-MM: lw $25, %call16(global_label)($gp) # encoding: [0xff,0x3c,A,A]466# O32-MM-NEXT: # fixup A - offset: 0, value: %call16(global_label), kind: fixup_MICROMIPS_CALL16467# O32-MM-NEXT: .reloc $tmp2, R_MICROMIPS_JALR, global_label468 469# MIPS: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]470# MM: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]471# ALL: nop # encoding: [0x00,0x00,0x00,0x00]472 473 jal global_label+8474 nop475 476# O32: lw $25, %got(global_label)($gp) # encoding: [0x8f,0x99,A,A]477# O32-NEXT: # fixup A - offset: 0, value: %got(global_label), kind: fixup_Mips_GOT478# O32-NEXT: addiu $25, $25, 8 # encoding: [0x27,0x39,0x00,0x08]479# O32-NOT: .reloc480 481# ELF-O32: 8f 99 00 00 lw $25, 0($gp)482# ELF-O32-NEXT: R_MIPS_GOT16 global_label483# ELF-O32-NEXT: 27 39 00 08 addiu $25, $25, 8484# ELF-O32-NEXT: 03 20 f8 09 jalr $25485# ELF-O32-NEXT: 00 00 00 00 nop486 487# XO32: lui $25, %got_hi(global_label+8) # encoding: [0x3c,0x19,A,A]488# XO32-NEXT: # fixup A - offset: 0, value: %got_hi(global_label+8), kind: fixup_Mips_GOT_HI16489# XO32-NEXT: addu $25, $25, $gp # encoding: [0x03,0x3c,0xc8,0x21]490# XO32-NEXT: lw $25, %got_lo(global_label)($25) # encoding: [0x8f,0x39,A,A]491# XO32-NEXT: # fixup A - offset: 0, value: %got_lo(global_label), kind: fixup_Mips_GOT_LO16492# XO32-NEXT: addiu $25, $25, 8 # encoding: [0x27,0x39,0x00,0x08]493# XO32-NOT: .reloc494 495# ELF-XO32: 3c 19 00 00 lui $25, 0496# ELF-XO32-NEXT: R_MIPS_GOT_HI16 global_label497# ELF-XO32-NEXT: 03 3c c8 21 addu $25, $25, $gp498# ELF-XO32-NEXT: 8f 39 00 00 lw $25, 0($25)499# ELF-XO32-NEXT: R_MIPS_GOT_LO16 global_label500# ELF-XO32-NEXT: 27 39 00 08 addiu $25, $25, 8501# ELF-XO32-NEXT: 03 20 f8 09 jalr $25502# ELF-XO32-NEXT: 00 00 00 00 nop503 504# N32: lw $25, %got_disp(global_label)($gp) # encoding: [0x8f,0x99,A,A]505# N32-NEXT: # fixup A - offset: 0, value: %got_disp(global_label), kind: fixup_Mips_GOT_DISP506# N32-NEXT: addiu $25, $25, 8 # encoding: [0x27,0x39,0x00,0x08]507# N32-NEXT: .reloc .Ltmp5, R_MIPS_JALR, global_label508 509# ELF-N32: 8f 99 00 00 lw $25, 0($gp)510# ELF-N32-NEXT: R_MIPS_GOT_DISP global_label511# ELF-N32-NEXT: 27 39 00 08 addiu $25, $25, 8512# ELF-N32-NEXT: 03 20 f8 09 jalr $25513# ELF-N32-NEXT: R_MIPS_JALR global_label514 515# XN32: lui $25, %got_hi(global_label+8) # encoding: [0x3c,0x19,A,A]516# XN32-NEXT: # fixup A - offset: 0, value: %got_hi(global_label+8), kind: fixup_Mips_GOT_HI16517# XN32-NEXT: addu $25, $25, $gp # encoding: [0x03,0x3c,0xc8,0x21]518# XN32-NEXT: lw $25, %got_lo(global_label)($25) # encoding: [0x8f,0x39,A,A]519# XN32-NEXT: # fixup A - offset: 0, value: %got_lo(global_label), kind: fixup_Mips_GOT_LO16520# XN32-NEXT: addiu $25, $25, 8 # encoding: [0x27,0x39,0x00,0x08]521# XN32-NEXT: .reloc .Ltmp5, R_MIPS_JALR, global_label522 523# ELF-XN32: 3c 19 00 00 lui $25, 0524# ELF-XN32-NEXT: R_MIPS_GOT_HI16 global_label+0x8525# ELF-XN32-NEXT: 03 3c c8 21 addu $25, $25, $gp526# ELF-XN32-NEXT: 8f 39 00 00 lw $25, 0($25)527# ELF-XN32-NEXT: R_MIPS_GOT_LO16 global_label528# ELF-XN32-NEXT: 27 39 00 08 addiu $25, $25, 8529# ELF-XN32-NEXT: 03 20 f8 09 jalr $25530# ELF-XN32-NEXT: R_MIPS_JALR global_label531 532# N64: ld $25, %got_disp(global_label)($gp) # encoding: [0xdf,0x99,A,A]533# N64-NEXT: # fixup A - offset: 0, value: %got_disp(global_label), kind: fixup_Mips_GOT_DISP534# N64-NEXT: daddiu $25, $25, 8 # encoding: [0x67,0x39,0x00,0x08]535# N64-NEXT: .reloc .Ltmp5, R_MIPS_JALR, global_label536 537# ELF-N64: df 99 00 00 ld $25, 0($gp)538# ELF-N64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE global_label539# ELF-N64-NEXT: 67 39 00 08 daddiu $25, $25, 8540# ELF-N64-NEXT: 03 20 f8 09 jalr $25541# ELF-N64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE global_label542 543# XN64: lui $25, %got_hi(global_label+8) # encoding: [0x3c,0x19,A,A]544# XN64-NEXT: # fixup A - offset: 0, value: %got_hi(global_label+8), kind: fixup_Mips_GOT_HI16545# XN64-NEXT: daddu $25, $25, $gp # encoding: [0x03,0x3c,0xc8,0x2d]546# XN64-NEXT: ld $25, %got_lo(global_label)($25) # encoding: [0xdf,0x39,A,A]547# XN64-NEXT: # fixup A - offset: 0, value: %got_lo(global_label), kind: fixup_Mips_GOT_LO16548# XN64-NEXT: daddiu $25, $25, 8 # encoding: [0x67,0x39,0x00,0x08]549# XN64-NEXT: .reloc .Ltmp5, R_MIPS_JALR, global_label550 551# ELF-XN64: 3c 19 00 00 lui $25, 0552# ELF-XN64-NEXT: R_MIPS_GOT_HI16/R_MIPS_NONE/R_MIPS_NONE global_label+0x8553# ELF-XN64-NEXT: 03 3c c8 2d daddu $25, $25, $gp554# ELF-XN64-NEXT: df 39 00 00 ld $25, 0($25)555# ELF-XN64-NEXT: R_MIPS_GOT_LO16/R_MIPS_NONE/R_MIPS_NONE global_label556# ELF-XN64-NEXT: 67 39 00 08 daddiu $25, $25, 8557# ELF-XN64-NEXT: 03 20 f8 09 jalr $25558# ELF-XN64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE global_label559 560# O32-MM: lw $25, %got(global_label)($gp) # encoding: [0xff,0x3c,A,A]561# O32-MM-NEXT: # fixup A - offset: 0, value: %got(global_label), kind: fixup_MICROMIPS_GOT16562# O32-MM-NEXT: addiu $25, $25, 8 # encoding: [0x33,0x39,0x00,0x08]563# O32-MM-NOT: .reloc564 565# MIPS: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]566# MM: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]567# ALL: nop # encoding: [0x00,0x00,0x00,0x00]568 569 jal .text570 nop571 572# Expanding "jal .text":573# O32: lw $25, %got(.text)($gp) # encoding: [0x8f,0x99,A,A]574# O32-NEXT: # fixup A - offset: 0, value: %got(.text), kind: fixup_Mips_GOT575 576# ELF-O32: 8f 99 00 00 lw $25, 0($gp)577# ELF-O32-NEXT: R_MIPS_GOT16 .text578 579# XO32: lw $25, %got(.text)($gp) # encoding: [0x8f,0x99,A,A]580# XO32-NEXT: # fixup A - offset: 0, value: %got(.text), kind: fixup_Mips_GOT581# XO32-NEXT: addiu $25, $25, %lo(.text) # encoding: [0x27,0x39,A,A]582# XO32-NEXT: # fixup A - offset: 0, value: %lo(.text), kind: fixup_Mips_LO16583# XO32-NEXT: .reloc $tmp3, R_MIPS_JALR, .text584 585# ELF-XO32: 8f 99 00 00 lw $25, 0($gp)586# ELF-XO32-NEXT: R_MIPS_GOT16 .text587# ELF-XO32-NEXT: 27 39 00 00 addiu $25, $25, 0588# ELF-XO32-NEXT: R_MIPS_LO16 .text589# ELF-XO32-NEXT: 03 20 f8 09 jalr $25590# ELF-XO32-NEXT: R_MIPS_JALR .text591 592# N32: lw $25, %got_disp(.text)($gp) # encoding: [0x8f,0x99,A,A]593# N32-NEXT: # fixup A - offset: 0, value: %got_disp(.text), kind: fixup_Mips_GOT_DISP594 595# ELF-N32: 8f 99 00 00 lw $25, 0($gp)596# ELF-N32-NEXT: R_MIPS_GOT_DISP .text597 598# XN32: lw $25, %got_disp(.text)($gp) # encoding: [0x8f,0x99,A,A]599# XN32-NEXT: # fixup A - offset: 0, value: %got_disp(.text), kind: fixup_Mips_GOT_DISP600# XN32-NEXT: .reloc .Ltmp6, R_MIPS_JALR, .text601 602# ELF-XN32: 8f 99 00 00 lw $25, 0($gp)603# ELF-XN32-NEXT: R_MIPS_GOT_DISP .text604# ELF-XN32-NEXT: 03 20 f8 09 jalr $25605# ELF-XN32-NEXT: R_MIPS_JALR .text606 607# N64: ld $25, %got_disp(.text)($gp) # encoding: [0xdf,0x99,A,A]608# N64-NEXT: # fixup A - offset: 0, value: %got_disp(.text), kind: fixup_Mips_GOT_DISP609 610# ELF-N64: df 99 00 00 ld $25, 0($gp)611# ELF-N64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE .text612 613# XN64: ld $25, %got_disp(.text)($gp) # encoding: [0xdf,0x99,A,A]614# XN64-NEXT: # fixup A - offset: 0, value: %got_disp(.text), kind: fixup_Mips_GOT_DISP615# XN64-NEXT: .reloc .Ltmp6, R_MIPS_JALR, .text616 617# ELF-XN64: df 99 00 00 ld $25, 0($gp)618# ELF-XN64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE .text619# ELF-XN64-NEXT: 03 20 f8 09 jalr $25620# ELF-XN64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE .text621 622# O32-MM: lw $25, %got(.text)($gp) # encoding: [0xff,0x3c,A,A]623# O32-MM-NEXT: # fixup A - offset: 0, value: %got(.text), kind: fixup_MICROMIPS_GOT16624# O32-MM-NEXT: addiu $25, $25, %lo(.text) # encoding: [0x33,0x39,A,A]625# O32-MM-NEXT: # fixup A - offset: 0, value: %lo(.text), kind: fixup_MICROMIPS_LO16626# O42-MM-NEXT: .reloc $tmp3, R_MICROMIPS_JALR, .text627 628# MIPS: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]629# MM: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]630# ALL: nop # encoding: [0x00,0x00,0x00,0x00]631 632 jal .text+8633 nop634 635# O32: lw $25, %got(.text+8)($gp) # encoding: [0x8f,0x99,A,A]636# O32-NEXT: # fixup A - offset: 0, value: %got(.text+8), kind: fixup_Mips_GOT637 638# ELF-O32: 8f 99 00 00 lw $25, 0($gp)639# ELF-O32-NEXT: R_MIPS_GOT16 .text640 641# XO32: lw $25, %got(.text+8)($gp) # encoding: [0x8f,0x99,A,A]642# XO32-NEXT: # fixup A - offset: 0, value: %got(.text+8), kind: fixup_Mips_GOT643# XO32-NEXT: addiu $25, $25, %lo(.text+8) # encoding: [0x27,0x39,A,A]644# XO32-NEXT: # fixup A - offset: 0, value: %lo(.text+8), kind: fixup_Mips_LO16645# XO32-NOT: .reloc646 647# ELF-XO32: 8f 99 00 00 lw $25, 0($gp)648# ELF-XO32-NEXT: R_MIPS_GOT16 .text649# ELF-XO32-NEXT: 27 39 00 08 addiu $25, $25, 8650# ELF-XO32-NEXT: R_MIPS_LO16 .text651# ELF-XO32-NEXT: 03 20 f8 09 jalr $25652# ELF-XO32-NEXT: 00 00 00 00 nop653 654# N32: lw $25, %got_disp(.text)($gp) # encoding: [0x8f,0x99,A,A]655# N32-NEXT: # fixup A - offset: 0, value: %got_disp(.text), kind: fixup_Mips_GOT_DISP656 657# ELF-N32: 8f 99 00 00 lw $25, 0($gp)658# ELF-N32-NEXT: R_MIPS_GOT_DISP .text659 660# XN32: lw $25, %got_disp(.text)($gp) # encoding: [0x8f,0x99,A,A]661# XN32-NEXT: # fixup A - offset: 0, value: %got_disp(.text), kind: fixup_Mips_GOT_DISP662# XN32-NEXT: addiu $25, $25, 8 # encoding: [0x27,0x39,0x00,0x08]663# XN32-NEXT: .reloc .Ltmp7, R_MIPS_JALR, .text664 665# ELF-XN32: 8f 99 00 00 lw $25, 0($gp)666# ELF-XN32-NEXT: R_MIPS_GOT_DISP .text667# ELF-XN32-NEXT: 27 39 00 08 addiu $25, $25, 8668# ELF-XN32-NEXT: 03 20 f8 09 jalr $25669# ELF-XN32-NEXT: R_MIPS_JALR .text670 671# N64: ld $25, %got_disp(.text)($gp) # encoding: [0xdf,0x99,A,A]672# N64-NEXT: # fixup A - offset: 0, value: %got_disp(.text), kind: fixup_Mips_GOT_DISP673 674# ELF-N64: df 99 00 00 ld $25, 0($gp)675# ELF-N64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE .text676 677# XN64: ld $25, %got_disp(.text)($gp) # encoding: [0xdf,0x99,A,A]678# XN64-NEXT: # fixup A - offset: 0, value: %got_disp(.text), kind: fixup_Mips_GOT_DISP679# XN64-NEXT: daddiu $25, $25, 8 # encoding: [0x67,0x39,0x00,0x08]680# XN64-NEXT: .reloc .Ltmp7, R_MIPS_JALR, .text681 682# ELF-XN64: df 99 00 00 ld $25, 0($gp)683# ELF-XN64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE .text684# ELF-XN64-NEXT: 67 39 00 08 daddiu $25, $25, 8685# ELF-XN64-NEXT: 03 20 f8 09 jalr $25686# ELF-XN64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE .text687 688# O32-MM: lw $25, %got(.text+8)($gp) # encoding: [0xff,0x3c,A,A]689# O32-MM-NEXT: # fixup A - offset: 0, value: %got(.text+8), kind: fixup_MICROMIPS_GOT16690# O32-MM-NEXT: addiu $25, $25, %lo(.text+8) # encoding: [0x33,0x39,A,A]691# O32-MM-NEXT: # fixup A - offset: 0, value: %lo(.text+8), kind: fixup_MICROMIPS_LO16692# O42-MM-NEXT: .reloc $tmp4, R_MICROMIPS_JALR, .text693 694# MIPS: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]695# MM: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]696# ALL: nop # encoding: [0x00,0x00,0x00,0x00]697 698 # local labels ($tmp symbols)699 jal 1f700 nop701 702# Expanding "jal 1f":703# O32: lw $25, %got($tmp4)($gp) # encoding: [0x8f,0x99,A,A]704# O32-NEXT: # fixup A - offset: 0, value: %got($tmp4), kind: fixup_Mips_GOT705# O32-NEXT: addiu $25, $25, %lo($tmp4) # encoding: [0x27,0x39,A,A]706# O32-NEXT: # fixup A - offset: 0, value: %lo($tmp4), kind: fixup_Mips_LO16707# O32-NEXT: .reloc $tmp5, R_MIPS_JALR, $tmp4708 709# ELF-O32: 8f 99 00 00 lw $25, 0($gp)710# ELF-O32-NEXT: R_MIPS_GOT16 .text711# ELF-O32-NEXT: 27 39 00 b8 addiu $25, $25, 184712# ELF-O32-NEXT: R_MIPS_LO16 .text713# ELF-O32-NEXT: 03 20 f8 09 jalr $25714# ELF-O32-NEXT: R_MIPS_JALR $tmp0715 716# XO32: lw $25, %got($tmp4)($gp) # encoding: [0x8f,0x99,A,A]717# XO32-NEXT: # fixup A - offset: 0, value: %got($tmp4), kind: fixup_Mips_GOT718# XO32-NEXT: addiu $25, $25, %lo($tmp4) # encoding: [0x27,0x39,A,A]719# XO32-NEXT: # fixup A - offset: 0, value: %lo($tmp4), kind: fixup_Mips_LO16720# XO32-NEXT: .reloc $tmp5, R_MIPS_JALR, $tmp4721 722# ELF-XO32: 8f 99 00 00 lw $25, 0($gp)723# ELF-XO32-NEXT: R_MIPS_GOT16 .text724# ELF-XO32-NEXT: 27 39 00 d8 addiu $25, $25, 216725# ELF-XO32-NEXT: R_MIPS_LO16 .text726# ELF-XO32-NEXT: 03 20 f8 09 jalr $25727# ELF-XO32-NEXT: R_MIPS_JALR $tmp0728 729# N32: lw $25, %got_disp(.Ltmp8)($gp) # encoding: [0x8f,0x99,A,A]730# N32-NEXT: # fixup A - offset: 0, value: %got_disp(.Ltmp8), kind: fixup_Mips_GOT_DISP731 732# ELF-N32: 8f 99 00 00 lw $25, 0($gp)733# ELF-N32-NEXT: R_MIPS_GOT_DISP .Ltmp0734 735# XN32: lw $25, %got_disp(.Ltmp8)($gp) # encoding: [0x8f,0x99,A,A]736# XN32-NEXT: # fixup A - offset: 0, value: %got_disp(.Ltmp8), kind: fixup_Mips_GOT_DISP737# XN32-NEXT: .reloc .Ltmp9, R_MIPS_JALR, .Ltmp8738 739# ELF-XN32: 8f 99 00 00 lw $25, 0($gp)740# ELF-XN32-NEXT: R_MIPS_GOT_DISP .Ltmp0741# ELF-XN32-NEXT: 03 20 f8 09 jalr $25742# ELF-XN32-NEXT: R_MIPS_JALR .Ltmp0743 744# N64: ld $25, %got_disp(.Ltmp8)($gp) # encoding: [0xdf,0x99,A,A]745# N64-NEXT: # fixup A - offset: 0, value: %got_disp(.Ltmp8), kind: fixup_Mips_GOT_DISP746 747# ELF-N64: df 99 00 00 ld $25, 0($gp)748# ELF-N64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE .Ltmp0749 750# XN64: ld $25, %got_disp(.Ltmp8)($gp) # encoding: [0xdf,0x99,A,A]751# XN64-NEXT: # fixup A - offset: 0, value: %got_disp(.Ltmp8), kind: fixup_Mips_GOT_DISP752# XN64-NEXT: .reloc .Ltmp9, R_MIPS_JALR, .Ltmp8753 754# ELF-XN64: df 99 00 00 ld $25, 0($gp)755# ELF-XN64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE .Ltmp0756# ELF-XN64-NEXT: 03 20 f8 09 jalr $25757# ELF-XN64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE .Ltmp0758 759# O32-MM: lw $25, %got($tmp4)($gp) # encoding: [0xff,0x3c,A,A]760# O32-MM-NEXT: # fixup A - offset: 0, value: %got($tmp4), kind: fixup_MICROMIPS_GOT16761# O32-MM-NEXT: addiu $25, $25, %lo($tmp4) # encoding: [0x33,0x39,A,A]762# O32-MM-NEXT: # fixup A - offset: 0, value: %lo($tmp4), kind: fixup_MICROMIPS_LO16763# O32-MM-NEXT: .reloc $tmp5, R_MICROMIPS_JALR, $tmp4764 765# MIPS: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]766# MM: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]767# ALL: nop # encoding: [0x00,0x00,0x00,0x00]768 769 jal 1f+8770 nop771 772# O32: lw $25, %got($tmp4+8)($gp) # encoding: [0x8f,0x99,A,A]773# O32-NEXT: # fixup A - offset: 0, value: %got($tmp4+8), kind: fixup_Mips_GOT774# O32-NEXT: addiu $25, $25, %lo($tmp4+8) # encoding: [0x27,0x39,A,A]775# O32-NEXT: # fixup A - offset: 0, value: %lo($tmp4+8), kind: fixup_Mips_LO16776# O32-NOT: .reloc777 778# ELF-O32: 8f 99 00 00 lw $25, 0($gp)779# ELF-O32-NEXT: R_MIPS_GOT16 .text780# ELF-O32-NEXT: 27 39 00 c0 addiu $25, $25, 192781# ELF-O32-NEXT: R_MIPS_LO16 .text782# ELF-O32-NEXT: 03 20 f8 09 jalr $25783# ELF-O32-NEXT: 00 00 00 00 nop784 785# XO32: lw $25, %got($tmp4+8)($gp) # encoding: [0x8f,0x99,A,A]786# XO32-NEXT: # fixup A - offset: 0, value: %got($tmp4+8), kind: fixup_Mips_GOT787# XO32-NEXT: addiu $25, $25, %lo($tmp4+8) # encoding: [0x27,0x39,A,A]788# XO32-NEXT: # fixup A - offset: 0, value: %lo($tmp4+8), kind: fixup_Mips_LO16789# XO32-NOT: .reloc790 791# ELF-XO32: 8f 99 00 00 lw $25, 0($gp)792# ELF-XO32-NEXT: R_MIPS_GOT16 .text793# ELF-XO32-NEXT: 27 39 00 e0 addiu $25, $25, 224794# ELF-XO32-NEXT: R_MIPS_LO16 .text795# ELF-XO32-NEXT: 03 20 f8 09 jalr $25796# ELF-XO32-NEXT: 00 00 00 00 nop797 798# N32: lw $25, %got_disp(.Ltmp8)($gp) # encoding: [0x8f,0x99,A,A]799# N32-NEXT: # fixup A - offset: 0, value: %got_disp(.Ltmp8), kind: fixup_Mips_GOT_DISP800 801# ELF-N32: 8f 99 00 00 lw $25, 0($gp)802# ELF-N32-NEXT: R_MIPS_GOT_DISP .Ltmp0803 804# XN32: lw $25, %got_disp(.Ltmp8)($gp) # encoding: [0x8f,0x99,A,A]805# XN32-NEXT: # fixup A - offset: 0, value: %got_disp(.Ltmp8), kind: fixup_Mips_GOT_DISP806# XN32-NEXT: addiu $25, $25, 8 # encoding: [0x27,0x39,0x00,0x08]807# XN32-NEXT: .reloc .Ltmp10, R_MIPS_JALR, .Ltmp8808 809# ELF-XN32: 8f 99 00 00 lw $25, 0($gp)810# ELF-XN32-NEXT: R_MIPS_GOT_DISP .Ltmp0811# ELF-XN32-NEXT: 27 39 00 08 addiu $25, $25, 8812# ELF-XN32-NEXT: 03 20 f8 09 jalr $25813# ELF-XN32-NEXT: R_MIPS_JALR .Ltmp0814 815# N64: ld $25, %got_disp(.Ltmp8)($gp) # encoding: [0xdf,0x99,A,A]816# N64-NEXT: # fixup A - offset: 0, value: %got_disp(.Ltmp8), kind: fixup_Mips_GOT_DISP817 818# ELF-N64: df 99 00 00 ld $25, 0($gp)819# ELF-N64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE .Ltmp0820 821# XN64: ld $25, %got_disp(.Ltmp8)($gp) # encoding: [0xdf,0x99,A,A]822# XN64-NEXT: # fixup A - offset: 0, value: %got_disp(.Ltmp8), kind: fixup_Mips_GOT_DISP823# XN64-NEXT: daddiu $25, $25, 8 # encoding: [0x67,0x39,0x00,0x08]824# XN64-NEXT: .reloc .Ltmp10, R_MIPS_JALR, .Ltmp8825 826# ELF-XN64: df 99 00 00 ld $25, 0($gp)827# ELF-XN64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE .Ltmp0828# ELF-XN64-NEXT: 67 39 00 08 daddiu $25, $25, 8829# ELF-XN64-NEXT: 03 20 f8 09 jalr $25830# ELF-XN64-NEXT: R_MIPS_JALR/R_MIPS_NONE/R_MIPS_NONE .Ltmp0831 832# O32-MM: lw $25, %got($tmp4+8)($gp) # encoding: [0xff,0x3c,A,A]833# O32-MM-NEXT: # fixup A - offset: 0, value: %got($tmp4+8), kind: fixup_MICROMIPS_GOT16834# O32-MM-NEXT: addiu $25, $25, %lo($tmp4+8) # encoding: [0x33,0x39,A,A]835# O32-MM-NEXT: # fixup A - offset: 0, value: %lo($tmp4+8), kind: fixup_MICROMIPS_LO16836# O32-MM-NOT: .reloc837 838# MIPS: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]839# MM: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]840# ALL: nop # encoding: [0x00,0x00,0x00,0x00]841 842 .local forward_local843 jal forward_local844 nop845 846# Expanding "jal forward_local":847# O32-FIXME: lw $25, %got(forward_local)($gp) # encoding: [0x8f,0x99,A,A]848# O32-FIXME: # fixup A - offset: 0, value: %got(forward_local), kind: fixup_Mips_GOT849# O32-FIXME: addiu $25, $25, %lo(forward_local) # encoding: [0x27,0x39,A,A]850# O32-FIXME:: # fixup A - offset: 0, value: %lo(forward_local), kind: fixup_Mips_LO16851# O32-FIXME: .reloc $tmp6, R_MIPS_JALR, forward_local852 853# ELF-O32: 8f 99 00 00 lw $25, 0($gp)854# ELF-O32-NEXT: R_MIPS_GOT16 .text855# ELF-O32-NEXT: 27 39 00 c4 addiu $25, $25, 196856# ELF-O32-NEXT: R_MIPS_LO16 .text857# ELF-O32-NEXT: 03 20 f8 09 jalr $25858# ELF-O32-NEXT: R_MIPS_JALR forward_local859 860# N32-FIXME: lw $25, %got_disp(forward_local)($gp) # encoding: [0x8f,0x99,A,A]861# N32-FIXME: # fixup A - offset: 0, value: %got_disp(forward_local), kind: fixup_Mips_GOT_DISP862 863# ELF-N32: 8f 99 00 00 lw $25, 0($gp)864# ELF-N32-NEXT: R_MIPS_GOT_DISP forward_local865 866# N64-FIXME: ld $25, %got_disp(forward_local)($gp) # encoding: [0xdf,0x99,A,A]867# N64-FIXME: # fixup A - offset: 0, value: %got_disp(forward_local), kind: fixup_Mips_GOT_DISP868 869# ELF-N64: df 99 00 00 ld $25, 0($gp)870# ELF-N64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE forward_local871 872# O32-MM-FIXME: lw $25, %got(forward_local)($gp) # encoding: [0xff,0x3c,A,A]873# O32-MM-FIXME: # fixup A - offset: 0, value: %got(forward_local), kind: fixup_MICROMIPS_GOT16874# O32-MM-FIXME: addiu $25, $25, %lo(forward_local) # encoding: [0x33,0x39,A,A]875# O32-MM-FIXME: # fixup A - offset: 0, value: %lo(forward_local), kind: fixup_MICROMIPS_LO16876# O32-MM-FIXME: .reloc $tmp6, R_MIPS_JALR, forward_local877 878# MIPS: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]879# MM: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]880# ALL: nop # encoding: [0x00,0x00,0x00,0x00]881 882 .local forward_local883 jal forward_local+8884 nop885 886# O32-FIXME: lw $25, %got(forward_local+8)($gp) # encoding: [0x8f,0x99,A,A]887# O32-FIXME: # fixup A - offset: 0, value: %got(forward_local+8), kind: fixup_Mips_GOT888# O32-FIXME: addiu $25, $25, %lo(forward_local+8) # encoding: [0x27,0x39,A,A]889# O32-FIXME:: # fixup A - offset: 0, value: %lo(forward_local+8), kind: fixup_Mips_LO16890# O32-FIXME: .reloc $tmp7, R_MIPS_JALR, forward_local891 892# ELF-O32: 8f 99 00 00 lw $25, 0($gp)893# ELF-O32-NEXT: R_MIPS_GOT16 .text894# ELF-O32-NEXT: 27 39 00 cc addiu $25, $25, 204895# ELF-O32-NEXT: R_MIPS_LO16 .text896# ELF-O32-NEXT: 03 20 f8 09 jalr $25897# ELF-O32-NEXT: 00 00 00 00 nop898 899# N32-FIXME: lw $25, %got_disp(forward_local)($gp) # encoding: [0x8f,0x99,A,A]900# N32-FIXME: # fixup A - offset: 0, value: %got_disp(forward_local), kind: fixup_Mips_GOT_DISP901 902# ELF-N32: 8f 99 00 00 lw $25, 0($gp)903# ELF-N32-NEXT: R_MIPS_GOT_DISP forward_local904 905# N64-FIXME: ld $25, %got_disp(forward_local)($gp) # encoding: [0xdf,0x99,A,A]906# N64-FIXME: # fixup A - offset: 0, value: %got_disp(forward_local), kind: fixup_Mips_GOT_DISP907 908# ELF-N64: df 99 00 00 ld $25, 0($gp)909# ELF-N64-NEXT: R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE forward_local910 911# O32-MM-FIXME: lw $25, %got(forward_local)($gp) # encoding: [0xff,0x3c,A,A]912# O32-MM-FIXME: # fixup A - offset: 0, value: %got(forward_local), kind: fixup_MICROMIPS_GOT16913# O32-MM-FIXME: addiu $25, $25, %lo(forward_local) # encoding: [0x33,0x39,A,A]914# O32-MM-FIXME: # fixup A - offset: 0, value: %lo(forward_local), kind: fixup_MICROMIPS_LO16915# O32-MM-FIXME: .reloc $tmp6, R_MIPS_JALR, forward_local916 917# MIPS: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]918# MM: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]919# ALL: nop # encoding: [0x00,0x00,0x00,0x00]920 921 .end local_label922 9231:924 nop925 add $8, $8, $8926 nop927forward_local:928