| ; REQUIRES: x86 |
| ; RUN: llvm-as %s -o %t.o |
| |
| ;; |
| ;; Verify that symbols given by -init and -fini are preserved and |
| ;; DT_INIT/DT_FINI are created. |
| ;; |
| |
| ; RUN: ld.lld -o %t.exe -pie %t.o |
| ; RUN: llvm-nm %t.exe | FileCheck -check-prefix=TEST1 --allow-empty %s |
| ; RUN: llvm-readelf -d %t.exe | FileCheck -check-prefix=TEST2 %s |
| |
| ; TEST1-NOT: foo |
| ; TEST1-NOT: bar |
| |
| ; TEST2-NOT: INIT |
| ; TEST2-NOT: FINI |
| |
| ; RUN: ld.lld -o %t.exe -pie -init=foo -fini=bar %t.o |
| ; RUN: llvm-nm %t.exe | FileCheck -check-prefix=TEST3 %s |
| ; RUN: llvm-readelf -d %t.exe | FileCheck -check-prefix=TEST4 %s |
| |
| ; TEST3: bar |
| ; TEST3: foo |
| |
| ; TEST4: INIT |
| ; TEST4: FINI |
| |
| target triple = "x86_64-unknown-linux-gnu" |
| target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" |
| |
| define void @foo() { |
| ret void |
| } |
| |
| define void @bar() { |
| ret void |
| } |