diff options
| author | Bryan Chan <bryan.chan@ca.ibm.com> | 2016-05-13 17:23:48 +0000 | 
|---|---|---|
| committer | Bryan Chan <bryan.chan@ca.ibm.com> | 2016-05-13 17:23:48 +0000 | 
| commit | d1145ad25348c4799eb3d44c3e7d36b1fb33ccf3 (patch) | |
| tree | cdaf709d562219ff5eb7173d58733b20ad71a258 /llvm/test | |
| parent | fa1df45c0d21ee1da18f6b6485b64bb58fc13f69 (diff) | |
| download | bcm5719-llvm-d1145ad25348c4799eb3d44c3e7d36b1fb33ccf3.tar.gz bcm5719-llvm-d1145ad25348c4799eb3d44c3e7d36b1fb33ccf3.zip | |
[RuntimeDyld] Support R_390_PC64 relocation type
Summary: When the MCJIT generates ELF code, some DWARF data requires 64-bit PC-relative relocation (R_390_PC64). This patch adds support for R_390_PC64 relocation to RuntimeDyld::resolveSystemZRelocation, to avoid an assertion failure.
Reviewers: uweigand
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D20033
llvm-svn: 269436
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/ExecutionEngine/RuntimeDyld/SystemZ/Inputs/rtdyld-globals.ll | 1 | ||||
| -rw-r--r-- | llvm/test/ExecutionEngine/RuntimeDyld/SystemZ/cfi-relo-pc64.s | 32 | 
2 files changed, 33 insertions, 0 deletions
| diff --git a/llvm/test/ExecutionEngine/RuntimeDyld/SystemZ/Inputs/rtdyld-globals.ll b/llvm/test/ExecutionEngine/RuntimeDyld/SystemZ/Inputs/rtdyld-globals.ll new file mode 100644 index 00000000000..165e8ace796 --- /dev/null +++ b/llvm/test/ExecutionEngine/RuntimeDyld/SystemZ/Inputs/rtdyld-globals.ll @@ -0,0 +1 @@ +@foo = global i8 0 diff --git a/llvm/test/ExecutionEngine/RuntimeDyld/SystemZ/cfi-relo-pc64.s b/llvm/test/ExecutionEngine/RuntimeDyld/SystemZ/cfi-relo-pc64.s new file mode 100644 index 00000000000..6fc166d612f --- /dev/null +++ b/llvm/test/ExecutionEngine/RuntimeDyld/SystemZ/cfi-relo-pc64.s @@ -0,0 +1,32 @@ +// Test that R_390_PC32 and R_390_PC64 relocations can be generated. +// RUN: llvm-mc -triple s390x-linux-gnu -relocation-model=pic -filetype=obj %s -o - | llvm-readobj -s -sr -sd | FileCheck %s + +// Test that RuntimeDyld can fix up such relocations. +// RUN: llvm-mc -triple s390x-linux-gnu -relocation-model=pic -filetype=obj %s -o %T/test-s390x-cfi-relo-pc64.o +// RUN: llc -mtriple=s390x-linux-gnu -relocation-model=pic -filetype=obj %S/Inputs/rtdyld-globals.ll -o %T/test-s390x-rtdyld-globals.o +// RUN: llvm-rtdyld -triple=s390x-linux-gnu -verify %T/test-s390x-cfi-relo-pc64.o %T/test-s390x-rtdyld-globals.o + +f1: +    .cfi_startproc +    .cfi_personality 0x9c, foo // DW_EH_PE_indirect|DW_EH_PE_pcrel|DW_EH_PE_sdata8 (0x9c) +    lr %r0, %r0 +    .cfi_endproc + +// CHECK:        Section { +// CHECK:          Index: +// CHECK:          Name: .rela.eh_frame +// CHECK-NEXT:     Type: SHT_RELA +// CHECK-NEXT:     Flags [ +// CHECK-NEXT:     ] +// CHECK-NEXT:     Address: 0x0 +// CHECK-NEXT:     Offset: +// CHECK-NEXT:     Size: 48 +// CHECK-NEXT:     Link: +// CHECK-NEXT:     Info: +// CHECK-NEXT:     AddressAlignment: 8 +// CHECK-NEXT:     EntrySize: 24 +// CHECK-NEXT:     Relocations [ +// CHECK-NEXT:       0x12 R_390_PC64 foo 0x0 +// CHECK-NEXT:       0x28 R_390_PC32 .text 0x0 +// CHECK-NEXT:     ] +// CHECK:        } | 

