mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 20:29:48 +00:00
01b026b023
Some targets (ie. Mips) have additional rules for ordering the relocation table entries. Allow them to override generic sortRelocs(), which sorts entries by Offset. Then override this function for Mips, to emit HI16 and GOT16 relocations against the local symbol in pair with the corresponding LO16 relocation. Patch by Vladimir Stefanovic. Differential Revision: http://reviews.llvm.org/D7414 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234883 91177308-0d34-0410-b5e6-96231b3b80d8
68 lines
1.6 KiB
ArmAsm
68 lines
1.6 KiB
ArmAsm
// RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux %s -o - | llvm-readobj -r | FileCheck %s
|
|
|
|
// Check that the appropriate relocations were created.
|
|
// For the xgot case we want to see R_MIPS_[GOT|CALL]_[HI|LO]16.
|
|
|
|
// CHECK: Relocations [
|
|
// CHECK: 0x0 R_MIPS_HI16 _gp_disp
|
|
// CHECK: 0x4 R_MIPS_LO16 _gp_disp
|
|
// CHECK: 0x14 R_MIPS_GOT_HI16 ext_1
|
|
// CHECK: 0x1C R_MIPS_GOT_LO16 ext_1
|
|
// CHECK: 0x24 R_MIPS_CALL_HI16 printf
|
|
// CHECK: 0x30 R_MIPS_CALL_LO16 printf
|
|
// CHECK: 0x2C R_MIPS_GOT16 $.str
|
|
// CHECK: 0x38 R_MIPS_LO16 $.str
|
|
// CHECK: ]
|
|
|
|
.text
|
|
.abicalls
|
|
.section .mdebug.abi32,"",@progbits
|
|
.file "/home/espindola/llvm/llvm/test/MC/Mips/xgot.ll"
|
|
.text
|
|
.globl fill
|
|
.align 2
|
|
.type fill,@function
|
|
.set nomips16
|
|
.ent fill
|
|
fill: # @fill
|
|
.frame $sp,24,$ra
|
|
.mask 0x80000000,-4
|
|
.fmask 0x00000000,0
|
|
.set noreorder
|
|
.set nomacro
|
|
.set noat
|
|
# BB#0: # %entry
|
|
lui $2, %hi(_gp_disp)
|
|
addiu $2, $2, %lo(_gp_disp)
|
|
addiu $sp, $sp, -24
|
|
sw $ra, 20($sp) # 4-byte Folded Spill
|
|
addu $gp, $2, $25
|
|
lui $1, %got_hi(ext_1)
|
|
addu $1, $1, $gp
|
|
lw $1, %got_lo(ext_1)($1)
|
|
lw $5, 0($1)
|
|
lui $1, %call_hi(printf)
|
|
addu $1, $1, $gp
|
|
lw $2, %got($.str)($gp)
|
|
lw $25, %call_lo(printf)($1)
|
|
jalr $25
|
|
addiu $4, $2, %lo($.str)
|
|
lw $ra, 20($sp) # 4-byte Folded Reload
|
|
jr $ra
|
|
addiu $sp, $sp, 24
|
|
.set at
|
|
.set macro
|
|
.set reorder
|
|
.end fill
|
|
$tmp0:
|
|
.size fill, ($tmp0)-fill
|
|
|
|
.type $.str,@object # @.str
|
|
.section .rodata.str1.1,"aMS",@progbits,1
|
|
$.str:
|
|
.asciz "ext_1=%d, i=%d\n"
|
|
.size $.str, 16
|
|
|
|
|
|
.text
|