xref: /llvm-project/lld/test/MachO/fold-dwarf-lsda.s (revision 7e5f4ed5565892e33d7f2a504e8345459d5235e5)
1# REQUIRES: x86
2## Regression test for https://github.com/llvm/llvm-project/issues/63039
3
4## Use an old version to ensure we do *not* have any compact-unwind.
5# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-macos9 %s -o %t.o
6
7## Pre-cond: smoke-check that there is really no compact-unwind entries - only dwarfs.
8# RUN: llvm-objdump --macho --unwind-info --dwarf=frames %t.o | FileCheck %s --check-prefix=PRE
9# PRE-NOT: Contents of __compact_unwind section:
10# PRE-NOT: Entry at offset
11# PRE: .eh_frame contents:
12# PRE: {{[0-9a-f]+}} {{.*}} CIE
13# PRE:   Format:                DWARF32
14# PRE:   Version:               1
15
16## Link should succeed (ie., not crashed due to bug in icf code).
17# RUN: %lld -lSystem -lc++ --icf=all -arch x86_64 -arch x86_64 -platform_version macos 11.0 11.0 %t.o -o %t.out
18
19## Post-cond: verify that the final binary has expected eh-frame contents.
20# RUN: llvm-objdump --macho --syms --dwarf=frames %t.out | FileCheck %s --check-prefix=POST
21# POST-LABEL: SYMBOL TABLE:
22# POST: [[#%x,EXCEPT_ADDR:]] l   O __TEXT,__gcc_except_tab GCC_except_table0
23# POST: [[#%x,EXCEPT_ADDR]]  l   O __TEXT,__gcc_except_tab GCC_except_table1
24# POST: [[#%.16x,F0_ADDR:]]  g   F __TEXT,__text _f0
25# POST: [[#%.16x,F1_ADDR:]]  g   F __TEXT,__text _f1
26# POST: [[#%.16x,G_ADDR:]]   g   F __TEXT,__text _g
27
28# POST-LABEL: .eh_frame contents:
29# POST: {{.*}} FDE cie={{.+}} pc=[[#%x,G_ADDR]]...{{.+}}
30
31# POST: {{.*}} FDE cie={{.+}} pc=[[#%x,F0_ADDR]]...{{.+}}
32# POST: Format:       DWARF32
33# POST: LSDA Address: [[#%.16x,EXCEPT_ADDR]]
34
35# POST: {{.*}} FDE cie={{.+}} pc=[[#%x,F1_ADDR]]...{{.+}}
36# POST Format:       DWARF32
37# POST LSDA Address: [[#%.16x,EXCEPT_ADDR]]
38
39	.section        __TEXT,__text,regular,pure_instructions
40	.globl	_f0
41_f0:
42	.cfi_startproc
43	.cfi_lsda 16, Lexception0
44	.cfi_def_cfa_offset 16
45	.cfi_offset %rbp, -16
46	callq	_g
47	retq
48	.cfi_endproc
49
50	.section	__TEXT,__gcc_except_tab
51GCC_except_table0:
52Lexception0:
53	.byte	255
54
55	.section	__TEXT,__text,regular,pure_instructions
56	.globl	_f1
57_f1:
58	.cfi_startproc
59	.cfi_lsda 16, Lexception1
60	.cfi_def_cfa_offset 16
61	.cfi_offset %rbp, -16
62	callq	_g
63	retq
64	.cfi_endproc
65
66	.section	__TEXT,__gcc_except_tab
67GCC_except_table1:
68Lexception1:
69	.byte	255
70
71	.section	__TEXT,__text,regular,pure_instructions
72	.globl	_g
73_g:
74	.cfi_startproc
75	.cfi_def_cfa_offset 16
76	.cfi_offset %rbp, -16
77	.cfi_def_cfa_register %rbp
78	retq
79	.cfi_endproc
80
81	.section	__TEXT,__text,regular,pure_instructions
82	.globl	_main
83_main:
84	retq
85
86.subsections_via_symbols
87