diff options
Diffstat (limited to 'llvm/test/MC/ELF/ifunc-reloc.s')
| -rw-r--r-- | llvm/test/MC/ELF/ifunc-reloc.s | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/llvm/test/MC/ELF/ifunc-reloc.s b/llvm/test/MC/ELF/ifunc-reloc.s index b4917371b0f..101e6b83f84 100644 --- a/llvm/test/MC/ELF/ifunc-reloc.s +++ b/llvm/test/MC/ELF/ifunc-reloc.s @@ -1,16 +1,29 @@ -// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -r | FileCheck %s - .global sym - .type sym, @gnu_indirect_function -alias: - .global alias - .type alias, @function - .set sym, alias +# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -r | FileCheck %s +.global alias +.type alias, @function +alias: + callq global +.global global +.type global, @gnu_indirect_function +.set global, alias - callq sym +.type local, @gnu_indirect_function +.set local, alias -// CHECK: Relocations [ -// CHECK-NEXT: Section {{.*}} .rela.text { -// CHECK-NEXT: 0x1 R_X86_64_PLT32 sym 0xFFFFFFFFFFFFFFFC -// CHECK-NEXT: } -// CHECK-NEXT: ] +## Check we don't create the relocations with a section symbol for both global +## They may result in IRELATIVE relocs that the dynamic loader will use to +## resolve addresses at startup time. +.data +.quad global +.quad local + +# CHECK: Relocations [ +# CHECK-NEXT: Section {{.*}} .rela.text { +# CHECK-NEXT: 0x1 R_X86_64_PLT32 global 0xFFFFFFFFFFFFFFFC +# CHECK-NEXT: } +# CHECK-NEXT: Section {{.*}} .rela.data { +# CHECK-NEXT: 0x0 R_X86_64_64 global 0x0 +# CHECK-NEXT: 0x8 R_X86_64_64 local 0x0 +# CHECK-NEXT: } +# CHECK-NEXT: ] |

