# REQUIRES: aarch64 # RUN: rm -rf %t && split-file %s %t # RUN: llvm-mc -filetype=obj -triple=arm64-apple-darwin %t/a.s -o %t/a.o # RUN: llvm-mc -filetype=obj -triple=arm64-apple-darwin %t/b.s -o %t/b.o ## Wildcard glob: all sections go to a single group # RUN: %lld -arch arm64 -e _main -o %t/a.out %t/a.o %t/b.o \ # RUN: --bp-compression-sort-section="*" \ # RUN: --verbose-bp-section-orderer 2>&1 | FileCheck %s --check-prefix=WILDCARD # WILDCARD: Sections for compression: 7 # WILDCARD: Compression groups: 1 # WILDCARD: *: 7 sections ## Two globs: sections are grouped by the winning glob # RUN: %lld -arch arm64 -e _main -o %t/a.out %t/a.o %t/b.o \ # RUN: --bp-compression-sort-section="__DATA*" \ # RUN: --bp-compression-sort-section="__TEXT*" \ # RUN: --verbose-bp-section-orderer 2>&1 | FileCheck %s --check-prefix=TWO-GLOBS ## Deprecated --bp-compression-sort=both still works # RUN: %lld -arch arm64 -e _main -o %t/a.out %t/a.o %t/b.o \ # RUN: --bp-compression-sort=both \ # RUN: --verbose-bp-section-orderer 2>&1 | FileCheck %s --check-prefix=LEGACY-BOTH ## Deprecated function/data modes still use the legacy buckets. # RUN: %lld -arch arm64 -e _main -o %t/a.out %t/a.o %t/b.o \ # RUN: --bp-compression-sort=function \ # RUN: --verbose-bp-section-orderer 2>&1 | FileCheck %s --check-prefix=LEGACY-FUNCTION # RUN: %lld -arch arm64 -e _main -o %t/a.out %t/a.o %t/b.o \ # RUN: --bp-compression-sort=data \ # RUN: --verbose-bp-section-orderer 2>&1 | FileCheck %s --check-prefix=LEGACY-DATA # TWO-GLOBS: Sections for compression: 7 # TWO-GLOBS: Compression groups: 2 # TWO-GLOBS: __DATA*: 6 sections # TWO-GLOBS: __TEXT*: 1 sections # LEGACY-BOTH: Sections for compression: 7 # LEGACY-BOTH: Compression groups: 2 # LEGACY-BOTH: legacy:function: 1 sections # LEGACY-BOTH: legacy:data: 6 sections # LEGACY-FUNCTION: Sections for compression: 1 # LEGACY-FUNCTION: Compression groups: 1 # LEGACY-FUNCTION: legacy:function: 1 sections # LEGACY-DATA: Sections for compression: 6 # LEGACY-DATA: Compression groups: 1 # LEGACY-DATA: legacy:data: 6 sections ## Single glob matching only TEXT # RUN: %lld -arch arm64 -e _main -o %t/a.out %t/a.o %t/b.o \ # RUN: --bp-compression-sort-section="__TEXT*" \ # RUN: --verbose-bp-section-orderer 2>&1 | FileCheck %s --check-prefix=TEXT # TEXT: Sections for compression: 1 # TEXT: Compression groups: 1 # TEXT: __TEXT*: 1 sections ## Exact section name glob # RUN: %lld -arch arm64 -e _main -o %t/a.out %t/a.o %t/b.o \ # RUN: --bp-compression-sort-section="__DATA__custom" \ # RUN: --verbose-bp-section-orderer 2>&1 | FileCheck %s --check-prefix=DATA # DATA: Sections for compression: 2 # DATA: Compression groups: 1 # DATA: __DATA__custom: 2 sections ## Match priority: explicit match_priority wins # RUN: %lld -arch arm64 -e _main -o %t/match.out %t/a.o %t/b.o \ # RUN: --bp-compression-sort-section="__DATA*" \ # RUN: --bp-compression-sort-section="__DATA__custom=0=1" \ # RUN: --verbose-bp-section-orderer 2>&1 | FileCheck %s --check-prefix=MATCH # MATCH: Compression groups: 2 # MATCH: __DATA*: 4 sections # MATCH: __DATA__custom: 2 sections #--- a.s .text .globl _main _main: ret .data data_01: .ascii "data_01" data_02: .ascii "data_02" data_03: .ascii "data_03" .section __DATA,__custom custom_06: .ascii "custom_06" custom_07: .ascii "custom_07" .bss bss0: .zero 10 .subsections_via_symbols #--- b.s .data data_11: .ascii "data_11" .subsections_via_symbols