mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-12 06:31:14 +00:00
6da3617e7f
MC only needs to know if the output is PIC or not. It never has to decide about creating GOTs and PLTs for example. The only thing that MC itself uses this information for is expanding "macros" in sparc and mips. The rest I am pretty sure could be moved to CodeGen. This is a cleanup and isolates the code from future changes to Reloc::Model. llvm-svn: 269909
81 lines
2.9 KiB
ArmAsm
81 lines
2.9 KiB
ArmAsm
! RUN: llvm-mc %s -arch=sparcv9 --position-independent -filetype=obj | llvm-readobj -r | FileCheck --check-prefix=PIC %s
|
|
! RUN: llvm-mc %s -arch=sparcv9 -filetype=obj | llvm-readobj -r | FileCheck --check-prefix=NOPIC %s
|
|
|
|
|
|
! PIC: Relocations [
|
|
! PIC-NOT: 0x{{[0-9,A-F]+}} R_SPARC_WPLT30 .text 0xC
|
|
! PIC: 0x{{[0-9,A-F]+}} R_SPARC_PC22 _GLOBAL_OFFSET_TABLE_ 0x4
|
|
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_PC10 _GLOBAL_OFFSET_TABLE_ 0x8
|
|
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_PC22 _GLOBAL_OFFSET_TABLE_ 0x0
|
|
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_PC10 _GLOBAL_OFFSET_TABLE_ 0x0
|
|
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOT22 AGlobalVar 0x0
|
|
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOT10 AGlobalVar 0x0
|
|
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOT22 AGlobalVar 0x0
|
|
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOT10 AGlobalVar 0x0
|
|
! 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: ]
|
|
|
|
! NOPIC: Relocations [
|
|
! NOPIC-NOT: 0x{{[0-9,A-F]+}} R_SPARC_WPLT30 .text 0xC
|
|
! NOPIC: 0x{{[0-9,A-F]+}} R_SPARC_HI22 _GLOBAL_OFFSET_TABLE_ 0x4
|
|
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_LO10 _GLOBAL_OFFSET_TABLE_ 0x8
|
|
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_HI22 _GLOBAL_OFFSET_TABLE_ 0x0
|
|
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_LO10 _GLOBAL_OFFSET_TABLE_ 0x0
|
|
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_HI22 AGlobalVar 0x0
|
|
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_LO10 AGlobalVar 0x0
|
|
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_HI22 AGlobalVar 0x0
|
|
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_LO10 AGlobalVar 0x0
|
|
! 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: ]
|
|
|
|
.section ".rodata"
|
|
.align 8
|
|
.LC0:
|
|
.asciz "string"
|
|
.section ".text"
|
|
.text
|
|
.globl foo
|
|
.align 4
|
|
.type foo,@function
|
|
foo:
|
|
.cfi_startproc
|
|
save %sp, -176, %sp
|
|
.cfi_def_cfa_register %fp
|
|
.cfi_window_save
|
|
.cfi_register 15, 31
|
|
.Ltmp4:
|
|
call .Ltmp5
|
|
.Ltmp6:
|
|
sethi %hi(_GLOBAL_OFFSET_TABLE_+(.Ltmp6-.Ltmp4)), %i1
|
|
.Ltmp5:
|
|
or %i1, %lo(_GLOBAL_OFFSET_TABLE_+(.Ltmp5-.Ltmp4)), %i1
|
|
set _GLOBAL_OFFSET_TABLE_, %i1
|
|
add %i1, %o7, %i1
|
|
sethi %hi(AGlobalVar), %i2
|
|
add %i2, %lo(AGlobalVar), %i2
|
|
set AGlobalVar, %i2
|
|
ldx [%i1+%i2], %i3
|
|
ldx [%i3], %i3
|
|
sethi %hi(.LC0), %i2
|
|
add %i2, %lo(.LC0), %i2
|
|
ldx [%i1+%i2], %i4
|
|
call bar
|
|
add %i0, %i1, %o0
|
|
ret
|
|
restore %g0, %o0, %o0
|
|
.Ltmp7:
|
|
.size foo, .Ltmp7-foo
|
|
.cfi_endproc
|
|
|
|
.type AGlobalVar,@object ! @AGlobalVar
|
|
.section .bss,#alloc,#write
|
|
.globl AGlobalVar
|
|
.align 8
|
|
AGlobalVar:
|
|
.xword 0 ! 0x0
|
|
.size AGlobalVar, 8
|