| # REQUIRES: x86 |
| # RUN: llvm-mc %s -o %t.o -filetype=obj -triple=x86_64-pc-linux |
| |
| ## Discard an unused .gcc_except_table in a COMDAT group or having SHF_LINK_ORDER |
| ## if the associated text section is discarded. |
| |
| # RUN: ld.lld --gc-sections --print-gc-sections -u _Z3foov %t.o -o /dev/null | \ |
| # RUN: FileCheck %s --implicit-check-not=.gcc_except_table |
| |
| # CHECK: removing unused section {{.*}}.o:(.text._Z6comdatv) |
| # CHECK-NEXT: removing unused section {{.*}}.o:(.text._Z9linkorderv) |
| # CHECK-NEXT: removing unused section {{.*}}.o:(.gcc_except_table._Z6comdatv) |
| # CHECK-NEXT: removing unused section {{.*}}.o:(.gcc_except_table._Z9linkorderv) |
| |
| ## An unused non-group non-SHF_LINK_ORDER .gcc_except_table is not discarded. |
| |
| # RUN: ld.lld --gc-sections --print-gc-sections -u _Z6comdatv -u _Z9linkorderv %t.o -o /dev/null | \ |
| # RUN: FileCheck /dev/null --implicit-check-not=.gcc_except_table |
| |
| ## If the text sections are live, the .gcc_except_table sections are retained as |
| ## well because they are referenced by .eh_frame pieces. |
| |
| # RUN: ld.lld --gc-sections --print-gc-sections -u _Z3foov -u _Z6comdatv -u _Z9linkorderv %t.o -o /dev/null | \ |
| # RUN: FileCheck %s --check-prefix=KEEP |
| |
| # KEEP-NOT: .gcc_except_table |
| |
| .section .text._Z3foov,"ax",@progbits |
| .globl _Z3foov |
| _Z3foov: |
| .cfi_startproc |
| ret |
| .cfi_lsda 0x1b,.Lexception0 |
| .cfi_endproc |
| |
| .section .text._Z6comdatv,"axG",@progbits,_Z6comdatv,comdat |
| .globl _Z6comdatv |
| _Z6comdatv: |
| .cfi_startproc |
| ret |
| .cfi_lsda 0x1b,.Lexception1 |
| .cfi_endproc |
| |
| .section .text._Z9linkorderv,"ax",@progbits |
| .globl _Z9linkorderv |
| _Z9linkorderv: |
| .cfi_startproc |
| ret |
| .cfi_lsda 0x1b,.Lexception2 |
| .cfi_endproc |
| |
| .section .gcc_except_table._Z3foov,"a",@progbits |
| .Lexception0: |
| .byte 255 |
| |
| .section .gcc_except_table._Z6comdatv,"aG",@progbits,_Z6comdatv,comdat |
| .Lexception1: |
| .byte 255 |
| |
| .section .gcc_except_table._Z9linkorderv,"ao",@progbits,_Z9linkorderv |
| .Lexception2: |
| .byte 255 |