| # REQUIRES: x86 |
| ## -z keep-text-section-prefix separates text sections with prefix .text.hot, |
| ## .text.unknown, .text.unlikely, .text.startup, or .text.exit, in the absence |
| ## of a SECTIONS command. |
| |
| # RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o |
| # RUN: ld.lld %t.o -o %t1 |
| # RUN: llvm-readelf -S %t1 | FileCheck --check-prefix=NOKEEP %s |
| # RUN: ld.lld -z nokeep-text-section-prefix %t.o -o %t2 |
| # RUN: cmp %t1 %t2 |
| |
| # RUN: ld.lld -z keep-text-section-prefix %t.o -o %t.keep |
| # RUN: llvm-readelf -S %t.keep | FileCheck --check-prefix=KEEP %s |
| |
| # KEEP: [ 1] .text |
| # KEEP-NEXT: [ 2] .text.hot |
| # KEEP-NEXT: [ 3] .text.unknown |
| # KEEP-NEXT: [ 4] .text.startup |
| # KEEP-NEXT: [ 5] .text.exit |
| # KEEP-NEXT: [ 6] .text.unlikely |
| |
| # NOKEEP: [ 1] .text |
| # NOKEEP-NOT: .text |
| |
| ## With a SECTIONS command, orphan sections are created verbatim. |
| ## No grouping is performed for them. |
| # RUN: echo 'SECTIONS {}' > %t.lds |
| # RUN: ld.lld -T %t.lds -z keep-text-section-prefix %t.o -o %t.script |
| # RUN: llvm-readelf -S %t.script | FileCheck --check-prefix=SCRIPT %s |
| |
| # SCRIPT: .text |
| # SCRIPT-NEXT: .text.f |
| # SCRIPT-NEXT: .text.hot.f_hot |
| # SCRIPT-NEXT: .text.unknown.f_unknown |
| # SCRIPT-NEXT: .text.startup.f_startup |
| # SCRIPT-NEXT: .text.exit.f_exit |
| # SCRIPT-NEXT: .text.unlikely.f_unlikely |
| |
| .globl _start |
| _start: |
| ret |
| |
| .section .text.f,"ax" |
| nop |
| |
| .section .text.hot.f_hot,"ax" |
| nop |
| |
| .section .text.unknown.f_unknown,"ax" |
| nop |
| |
| .section .text.startup.f_startup,"ax" |
| nop |
| |
| .section .text.exit.f_exit,"ax" |
| nop |
| |
| .section .text.unlikely.f_unlikely,"ax" |
| nop |