108 lines · plain
1# REQUIRES: x862# RUN: rm -rf %t && split-file %s %t && cd %t3# RUN: llvm-mc -filetype=obj -triple=x86_64 -crel a.s -o a.o4# RUN: llvm-mc -filetype=obj -triple=x86_64 -crel b.s -o b.o5# RUN: ld.lld -r b.o a.o -o out6# RUN: llvm-readobj -r out | FileCheck %s --check-prefixes=CHECK,CRELFOO7 8# RUN: llvm-mc -filetype=obj -triple=x86_64 a.s -o a1.o9# RUN: ld.lld -r b.o a1.o -o out110# RUN: llvm-readobj -r out1 | FileCheck %s --check-prefixes=CHECK,RELAFOO11# RUN: ld.lld -r a1.o b.o -o out212# RUN: llvm-readobj -r out2 | FileCheck %s --check-prefixes=CHECK213 14# CHECK: Relocations [15# CHECK-NEXT: .crel.text {16# CHECK-NEXT: 0x1 R_X86_64_PLT32 fb 0xFFFFFFFFFFFFFFFC17# CHECK-NEXT: 0x9 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC18# CHECK-NEXT: 0xE R_X86_64_PLT32 .text.foo 0xFFFFFFFFFFFFFFFC19# CHECK-NEXT: }20# CHECK-NEXT: .crel.rodata {21# CHECK-NEXT: 0x0 R_X86_64_PC32 foo 0x022# CHECK-NEXT: 0xF R_X86_64_PC32 foo 0x3F23# CHECK-NEXT: 0x1F R_X86_64_PC64 foo 0x7F24# CHECK-NEXT: 0x27 R_X86_64_PC32 _start 0xFFFFFFFFFFFFE07F25# CHECK-COUNT-12: R_X86_64_32 _start 0x026# CHECK-NEXT: }27# CRELFOO-NEXT: .crel.text.foo {28# RELAFOO-NEXT: .rela.text.foo {29# CHECK-NEXT: 0x3 R_X86_64_PC32 .L.str 0xFFFFFFFFFFFFFFFC30# CHECK-NEXT: 0xA R_X86_64_PC32 .L.str1 0xFFFFFFFFFFFFFFFC31# CHECK-NEXT: 0xF R_X86_64_PLT32 g 0xFFFFFFFFFFFFFFFC32# CHECK-NEXT: 0x14 R_X86_64_PLT32 g 0xFFFFFFFFFFFFFFFC33# CHECK-NEXT: }34# CRELFOO-NEXT: .crel.data {35# RELAFOO-NEXT: .rela.data {36# CHECK-NEXT: 0x8 R_X86_64_64 _start 0x800000000000000037# CHECK-NEXT: 0x18 R_X86_64_64 _start 0xFFFFFFFFFFFFFFFF38# CHECK-NEXT: }39# CHECK-NEXT: ]40 41# CHECK2: Relocations [42# CHECK2-NEXT: .crel.text {43# CHECK2-NEXT: 0x1 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC44# CHECK2-NEXT: 0x6 R_X86_64_PLT32 .text.foo 0xFFFFFFFFFFFFFFFC45# CHECK2-NEXT: 0xD R_X86_64_PLT32 fb 0xFFFFFFFFFFFFFFFC46# CHECK2-NEXT: }47# CHECK2-NEXT: .rela.text.foo {48# CHECK2-NEXT: 0x3 R_X86_64_PC32 .L.str 0xFFFFFFFFFFFFFFFC49# CHECK2-NEXT: 0xA R_X86_64_PC32 .L.str1 0xFFFFFFFFFFFFFFFC50# CHECK2-NEXT: 0xF R_X86_64_PLT32 g 0xFFFFFFFFFFFFFFFC51# CHECK2-NEXT: 0x14 R_X86_64_PLT32 g 0xFFFFFFFFFFFFFFFC52# CHECK2-NEXT: }53# CHECK2-NEXT: .rela.data {54# CHECK2-NEXT: 0x8 R_X86_64_64 _start 0x800000000000000055# CHECK2-NEXT: 0x18 R_X86_64_64 _start 0xFFFFFFFFFFFFFFFF56# CHECK2-NEXT: }57# CHECK2-NEXT: .crel.rodata {58# CHECK2-NEXT: 0x0 R_X86_64_PC32 foo 0x059# CHECK2-NEXT: 0xF R_X86_64_PC32 foo 0x3F60# CHECK2-NEXT: 0x1F R_X86_64_PC64 foo 0x7F61# CHECK2-NEXT: 0x27 R_X86_64_PC32 _start 0xFFFFFFFFFFFFE07F62# CHECK2-COUNT-12: R_X86_64_32 _start 0x063# CHECK2-NEXT: }64# CHECK2-NEXT: ]65 66#--- a.s67.global _start, foo68_start:69 call foo70 call .text.foo71 72.section .text.foo,"ax"73foo:74 leaq .L.str(%rip), %rsi75 leaq .L.str1(%rip), %rsi76 call g77 call g78 79.section .rodata.str1.1,"aMS",@progbits,180.L.str:81 .asciz "abc"82.L.str1:83 .asciz "def"84 85.data86.quad 087.quad _start - 0x800000000000000088.quad 089.quad _start - 190 91#--- b.s92.globl fb93fb:94 call fb95 96.section .rodata,"a"97.long foo - .98.space 15-499.long foo - . + 63 # offset+=15100.space 16-4101.quad foo - . + 127 # offset+=16102.long _start - . - 8065103 104## Ensure .crel.rodata contains 16 relocations so that getULEB128Size(crelHeader) > 1.105.rept 12106.long _start107.endr108