diff options
Diffstat (limited to 'llvm/test/MC')
-rw-r--r-- | llvm/test/MC/Sparc/sparc-pic.s | 23 | ||||
-rw-r--r-- | llvm/test/MC/Sparc/sparc-relocations.s | 5 |
2 files changed, 28 insertions, 0 deletions
diff --git a/llvm/test/MC/Sparc/sparc-pic.s b/llvm/test/MC/Sparc/sparc-pic.s index f51e1e93b50..a16ed807afc 100644 --- a/llvm/test/MC/Sparc/sparc-pic.s +++ b/llvm/test/MC/Sparc/sparc-pic.s @@ -15,6 +15,7 @@ ! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOT22 .LC0 0x0 ! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOT10 .LC0 0x0 ! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_WPLT30 bar 0x0 +! PIC: 0x{{[0-9,A-F]+}} R_SPARC_GOT13 value 0x0 ! PIC: ] ! NOPIC: Relocations [ @@ -30,6 +31,7 @@ ! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_HI22 .rodata 0x0 ! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_LO10 .rodata 0x0 ! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_WDISP30 bar 0x0 +! NOPIC: 0x{{[0-9,A-F]+}} R_SPARC_13 value 0x0 ! NOPIC: ] .section ".rodata" @@ -78,3 +80,24 @@ foo: AGlobalVar: .xword 0 ! 0x0 .size AGlobalVar, 8 + + .section ".text" + .text + .globl pic13 + .align 4 + .type pic13,@function +pic13: + save %sp, -128, %sp +.Ltmp0: + call .Ltmp1 +.Ltmp2: + sethi %hi(_GLOBAL_OFFSET_TABLE_+(.Ltmp2-.Ltmp0)), %i0 +.Ltmp1: + or %i0, %lo(_GLOBAL_OFFSET_TABLE_+(.Ltmp1-.Ltmp0)), %i0 + add %i0, %o7, %i0 + ldx [%i0+value], %i0 + ld [%i0], %i0 + ret + restore +.Lfunc_end0: + .size pic13, .Lfunc_end0-pic13 diff --git a/llvm/test/MC/Sparc/sparc-relocations.s b/llvm/test/MC/Sparc/sparc-relocations.s index 58ad37e1da5..18fc123fac0 100644 --- a/llvm/test/MC/Sparc/sparc-relocations.s +++ b/llvm/test/MC/Sparc/sparc-relocations.s @@ -11,6 +11,7 @@ ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_L44 sym ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_HH22 sym ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_HM10 sym + ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_13 sym ! CHECK-ELF: ] ! CHECK: call foo ! encoding: [0b01AAAAAA,A,A,A] @@ -44,3 +45,7 @@ ! CHECK: or %g1, %hm(sym), %g3 ! encoding: [0x86,0x10,0b011000AA,A] ! CHECK-NEXT: ! fixup A - offset: 0, value: %hm(sym), kind: fixup_sparc_hm or %g1, %hm(sym), %g3 + + ! CHECK: or %g1, sym, %g3 ! encoding: [0x86,0x10,0b011AAAAA,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: sym, kind: fixup_sparc_13 + or %g1, sym, %g3 |