| // RUN: llvm-mc -triple x86_64-apple-macos10.6 -filetype=obj %s -o %t.o |
| // RUN: llvm-objdump --macho --unwind-info --dwarf=frames %t.o | FileCheck %s |
| |
| /// For functions whose unwind info cannot be encoded with compact unwind, make |
| /// sure that we encode them using DWARF unwind, and make sure we emit a compact |
| /// unwind entry that indicates that a DWARF encoding is being used. |
| |
| _f: |
| .cfi_startproc |
| ## This encodes DW_CFA_GNU_args_size which cannot be expressed using compact |
| ## unwind, so we must use DWARF unwind instead. |
| .cfi_escape 0x2e, 0x10 |
| ret |
| .cfi_endproc |
| |
| _g: |
| .cfi_startproc |
| ## This encodes DW_CFA_GNU_args_size which cannot be expressed using compact |
| ## unwind, so we must use DWARF unwind instead. |
| .cfi_escape 0x2e, 0x10 |
| ret |
| .cfi_endproc |
| |
| // CHECK: Contents of __compact_unwind section: |
| // CHECK: Entry at offset 0x0: |
| // CHECK: start: 0x[[#%x,F:]] _f |
| // CHECK: length: 0x1 |
| // CHECK: compact encoding: 0x04000000 |
| // CHECK: Entry at offset 0x20: |
| // CHECK: start: 0x[[#%x,G:]] _g |
| // CHECK: length: 0x1 |
| // CHECK: compact encoding: 0x04000000 |
| |
| // CHECK: .eh_frame contents: |
| // CHECK: 00000000 00000014 00000000 CIE |
| // CHECK: Format: DWARF32 |
| // CHECK: Version: 1 |
| // CHECK: Augmentation: "zR" |
| // CHECK: Code alignment factor: 1 |
| // CHECK: Data alignment factor: -8 |
| // CHECK: Return address column: 16 |
| // CHECK: Augmentation data: 10 |
| |
| // CHECK: FDE cie=00000000 pc=[[#%.8x,F]]... |
| // CHECK: Format: DWARF32 |
| // CHECK: DW_CFA_GNU_args_size: +16 |
| |
| // CHECK: FDE cie=00000000 pc=[[#%.8x,G]]... |
| // CHECK: Format: DWARF32 |
| // CHECK: DW_CFA_GNU_args_size: +16 |