brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · ad356d4 Raw
117 lines · plain
1# REQUIRES: x862# RUN: rm -rf %t && split-file %s %t && cd %t3# RUN: llvm-mc -filetype=obj -triple=x86_64 a.s -o a.o4 5# Provide new symbol. The value should be 1, like set in PROVIDE()6# RUN: echo "SECTIONS { PROVIDE(newsym = 1);}" > a1.t7# RUN: ld.lld -o a1 -T a1.t a.o8# RUN: llvm-objdump -t a1 | FileCheck --check-prefix=PROVIDE1 %s9# PROVIDE1: 0000000000000001 g       *ABS*  0000000000000000 newsym10 11# Provide new symbol (hidden). The value should be 112# RUN: echo "SECTIONS { PROVIDE_HIDDEN(newsym = 1);}" > a2.t13# RUN: ld.lld -o a2 -T a2.t a.o14# RUN: llvm-objdump -t a2 | FileCheck --check-prefix=HIDDEN1 %s15# HIDDEN1: 0000000000000001 l       *ABS*  0000000000000000 .hidden newsym16 17# RUN: echo 'SECTIONS { PROVIDE_HIDDEN("newsym" = 1);}' > a2.t18# RUN: ld.lld -o a2 -T a2.t a.o19# RUN: llvm-objdump -t a2 | FileCheck --check-prefix=HIDDEN1 %s20 21# RUN: ld.lld -o chain -T chain.t a.o22# RUN: llvm-nm chain | FileCheck %s23 24# CHECK-NOT: another_unused25# CHECK:      0000000000007000 a f126# CHECK-NEXT: 0000000000007000 A f227# CHECK-NEXT: 0000000000007000 A f328# CHECK-NEXT: 0000000000007000 A f429# CHECK-NEXT: 0000000000006000 A f530# CHECK-NEXT: 0000000000003000 A f631# CHECK-NEXT: 0000000000001000 A f732# CHECK-NOT: g133# CHECK-NOT: g234# CHECK-NEXT: 0000000000007500 A newsym35# CHECK: 0000000000002000 A u36# CHECK-NOT: unused37# CHECK-NEXT: 0000000000002000 A v38# CHECK-NEXT: 0000000000002000 A w39 40 41# RUN: ld.lld -o chain_with_cycle -T chain_with_cycle.t a.o42# RUN: llvm-nm chain_with_cycle | FileCheck %s --check-prefix=CHAIN_WITH_CYCLE43 44# CHAIN_WITH_CYCLE: 000 A f145# CHAIN_WITH_CYCLE: 000 A f246# CHAIN_WITH_CYCLE: 000 A f347# CHAIN_WITH_CYCLE: 000 A f448# CHAIN_WITH_CYCLE: 000 A newsym49 50# RUN: not ld.lld -T chain2.t a.o 2>&1 | FileCheck %s --check-prefix=ERR --implicit-check-not=error:51# ERR-COUNT-3: error: chain2.t:1: symbol not found: undef52 53## _start in a lazy object file references PROVIDE symbols. We extract _start54## earlier to avoid spurious "symbol not found" errors.55# RUN: llvm-mc -filetype=obj -triple=x86_64 undef.s -o undef.o56# RUN: llvm-mc -filetype=obj -triple=x86_64 start.s -o start.o57# RUN: ld.lld -T chain2.t undef.o --start-lib start.o --end-lib -o lazy58# RUN: llvm-nm lazy | FileCheck %s --check-prefix=LAZY59# RUN: ld.lld -e 0 -T chain2.t --undefined-glob '_start*' undef.o --start-lib start.o --end-lib -o lazy60# RUN: llvm-nm lazy | FileCheck %s --check-prefix=LAZY61 62# LAZY:      T _start63# LAZY-NEXT: t f164# LAZY-NEXT: T f265# LAZY-NEXT: T newsym66# LAZY-NEXT: T unde67 68#--- a.s69.global _start70_start:71 nop72 73.globl patatino74patatino:75  movl newsym, %eax76 77#--- chain.t78PROVIDE(f7 = 0x1000);79PROVIDE(f5 = f6 + 0x3000);80PROVIDE(f6 = f7 + 0x2000);81PROVIDE(f4 = f5 + 0x1000);82PROVIDE(f3 = f4);83PROVIDE(f2 = f3);84PROVIDE_HIDDEN(f1 = f2);85PROVIDE(newsym = f1 + 0x500);86 87u = v;88PROVIDE(w = 0x2000);89PROVIDE(v = w);90 91PROVIDE(g2 = 0x1000);92PROVIDE_HIDDEN(g1 = g2);93PROVIDE(unused = g1);94PROVIDE_HIDDEN(another_unused = g1);95 96#--- chain_with_cycle.t97PROVIDE("f1" = f2 + f3);98PROVIDE(f2 = f3 + f4);99PROVIDE(f3 = f4);100PROVIDE(f4 = f1);101PROVIDE(newsym = f1);102 103#--- chain2.t104PROVIDE(f2 = undef);105PROVIDE_HIDDEN(f1 = f2);106PROVIDE(newsym = f1);107 108#--- undef.s109.globl undef110undef: ret111 112#--- start.s113.globl _start114_start: ret115.data116.quad newsym117