brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.4 KiB · da4cad9 Raw
106 lines · plain
1# REQUIRES: x862## Check that group members are retained or discarded as a unit, and3## non-SHF_ALLOC sections in a group are subject to garbage collection,4## if at least one member has the SHF_ALLOC flag.5 6# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o7# RUN: ld.lld --gc-sections %t.o -o %t.dead8# RUN: llvm-readobj -S %t.dead | FileCheck %s --check-prefix=CHECK-DEAD9 10## .mynote.ccc is retained because it is not in a group.11# CHECK-DEAD-NOT: Name: .myanote.aaa12# CHECK-DEAD-NOT: Name: .mytext.aaa13# CHECK-DEAD-NOT: Name: .mybss.aaa14# CHECK-DEAD-NOT: Name: .mynote.aaa15# CHECK-DEAD-NOT: Name: .myanote.bbb16# CHECK-DEAD-NOT: Name: .mytext.bbb17# CHECK-DEAD-NOT: Name: .mybss.bbb18# CHECK-DEAD-NOT: Name: .mynote.bbb19# CHECK-DEAD:     Name: .mynote.ccc20 21# RUN: ld.lld --gc-sections %t.o -o %t -e anote_aaa22# RUN: llvm-readobj -S %t | FileCheck %s --check-prefix=CHECK-LIVE-GROUP23# RUN: ld.lld --gc-sections %t.o -o %t -e aaa24# RUN: llvm-readobj -S %t | FileCheck %s --check-prefix=CHECK-LIVE-GROUP25# RUN: ld.lld --gc-sections %t.o -o %t -e bss_aaa26# RUN: llvm-readobj -S %t | FileCheck %s --check-prefix=CHECK-LIVE-GROUP27 28## note_zero as the entry point does not make much sense because it is defined29## in a non-SHF_ALLOC section. This is just to demonstrate the behavior.30# RUN: ld.lld --gc-sections %t.o -o %t -e note_aaa31# RUN: llvm-readobj -S %t | FileCheck %s --check-prefix=CHECK-LIVE-GROUP32 33# CHECK-LIVE-GROUP: Name: .myanote.aaa34# CHECK-LIVE-GROUP: Name: .mytext.aaa35# CHECK-LIVE-GROUP: Name: .mybss.aaa36# CHECK-LIVE-GROUP: Name: .mynote.aaa37# CHECK-LIVE-GROUP-NOT: Name: .myanote.bbb38# CHECK-LIVE-GROUP-NOT: Name: .mytext.bbb39# CHECK-LIVE-GROUP-NOT: Name: .mybss.bbb40# CHECK-LIVE-GROUP-NOT: Name: .mynote.bbb41# CHECK-LIVE-GROUP: Name: .mynote.ccc42 43# RUN: ld.lld --gc-sections %t.o -o %t -e anote_bbb44# RUN: llvm-readobj -S %t | FileCheck %s --check-prefix=CHECK-LIVE-COMDAT45# RUN: ld.lld --gc-sections %t.o -o %t -e bbb46# RUN: llvm-readobj -S %t | FileCheck %s --check-prefix=CHECK-LIVE-COMDAT47# RUN: ld.lld --gc-sections %t.o -o %t -e bss_bbb48# RUN: llvm-readobj -S %t | FileCheck %s --check-prefix=CHECK-LIVE-COMDAT49 50## note_bbb as the entry point does not make much sense because it is defined51## in a non-SHF_ALLOC section. This is just to demonstrate the behavior.52# RUN: ld.lld --gc-sections %t.o -o %t -e note_bbb53# RUN: llvm-readobj -S %t | FileCheck %s --check-prefix=CHECK-LIVE-COMDAT54 55# CHECK-LIVE-COMDAT-NOT: Name: .myanote.aaa56# CHECK-LIVE-COMDAT-NOT: Name: .mytext.aaa57# CHECK-LIVE-COMDAT-NOT: Name: .mybss.aaa58# CHECK-LIVE-COMDAT-NOT: Name: .mynote.aaa59# CHECK-LIVE-COMDAT: Name: .myanote.bbb60# CHECK-LIVE-COMDAT: Name: .mytext.bbb61# CHECK-LIVE-COMDAT: Name: .mybss.bbb62# CHECK-LIVE-COMDAT: Name: .mynote.bbb63# CHECK-LIVE-COMDAT: Name: .mynote.ccc64 65## These sections are in a zero flag group `aaa`.66.globl anote_aaa, aaa, bss_aaa, note_aaa67 68.section .myanote.aaa,"aG",@note,aaa69anote_aaa:70.byte 071 72.section .mytext.aaa,"axG",@progbits,aaa73aaa:74.byte 075 76.section .mybss.aaa,"awG",@nobits,aaa77bss_aaa:78.byte 079 80.section .mynote.aaa,"G",@note,aaa81note_aaa:82.byte 083 84## These sections are in a COMDAT group `bbb`.85.globl anote_bbb, bbb, bss_bbb, note_bbb86 87.section .myanote.bbb,"aG",@note,bbb,comdat88anote_bbb:89.byte 090 91.section .mytext.bbb,"axG",@progbits,bbb,comdat92bbb:93.byte 094 95.section .mybss.bbb,"awG",@nobits,bbb,comdat96bss_bbb:97.byte 098 99.section .mynote.bbb,"G",@note,bbb,comdat100note_bbb:101.byte 0102 103## This section isn't in any group.104.section .mynote.ccc,"",@note105.byte 0106