brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · 6e97c3e Raw
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