| // REQUIRES: x86 |
| // RUN: llvm-mc %s -o %t.o -filetype=obj --triple=x86_64-unknown-linux |
| // RUN: ld.lld %t.o -o %t --export-dynamic --gc-sections |
| // RUN: llvm-readelf -S %t | FileCheck --implicit-check-not=has_startstop %s |
| |
| // We can't let the has_startstop section be split by partition because it is |
| // referenced by __start_ and __stop_ symbols, so the split could result in |
| // some sections being moved out of the __start_/__stop_ range. Make sure that |
| // that didn't happen by checking that there is only one section. |
| // |
| // It's fine for us to split no_startstop because of the lack of |
| // __start_/__stop_ symbols. |
| |
| // CHECK: has_startstop |
| // CHECK: no_startstop |
| |
| // CHECK: no_startstop |
| |
| .section .llvm_sympart.f1,"",@llvm_sympart |
| .asciz "part1" |
| .quad f1 |
| |
| .section .text._start,"ax",@progbits |
| .globl _start |
| _start: |
| call __start_has_startstop |
| call __stop_has_startstop |
| |
| .section .text.f1,"ax",@progbits |
| .globl f1 |
| f1: |
| |
| .section has_startstop,"ao",@progbits,.text._start,unique,1 |
| .quad 1 |
| |
| .section has_startstop,"ao",@progbits,.text.f1,unique,2 |
| .quad 2 |
| |
| .section no_startstop,"ao",@progbits,.text._start,unique,1 |
| .quad 3 |
| |
| .section no_startstop,"ao",@progbits,.text.f1,unique,2 |
| .quad 4 |