# REQUIRES: x86 ## Test that we correctly handle symbol relocations in the compact unwind ## section. ## llvm-mc does not emit such relocations for compact unwind, but `ld -r` does. ## As such, these yaml files were from an object file produced with 'ld -r', ## specifically: ## ## // foo.s ## .globl _foo ## .text ## .p2align 2 ## _foo: ## .cfi_startproc ## .cfi_personality 155, ___gxx_personality_v0 ## .cfi_lsda 16, _exception0 ## .cfi_def_cfa_offset 16 ## ret ## .cfi_endproc ## ## .section __TEXT,__gcc_except_tab ## _exception0: ## .space 0 ## ## llvm-mc -filetype=obj -triple=x86_64-apple-macos10.15 -o foo1.o foo.s ## ld -r -o foo.o foo1.o # RUN: rm -rf %t; mkdir -p %t # RUN: yaml2obj %s -o %t/foo.o # RUN: %lld -dylib -lc++ %t/foo.o -o %t/foo # RUN: llvm-objdump --macho --syms --unwind-info %t/foo | FileCheck %s # CHECK: SYMBOL TABLE: # CHECK-DAG: [[#%x,FOO:]] g F __TEXT,__text _foo # CHECK-DAG: [[#%x,EXCEPT0:]] l O __TEXT,__gcc_except_tab _exception0 # CHECK: LSDA descriptors: # CHECK-NEXT: [0]: function offset=0x[[#%.8x,FOO]], LSDA offset=0x[[#%.8x,EXCEPT0]] --- !mach-o FileHeader: magic: 0xFEEDFACF cputype: 0x1000007 cpusubtype: 0x3 filetype: 0x1 ncmds: 2 sizeofcmds: 464 flags: 0x0 reserved: 0x0 LoadCommands: - cmd: LC_SEGMENT_64 cmdsize: 392 segname: '' vmaddr: 0 vmsize: 112 fileoff: 528 filesize: 112 maxprot: 7 initprot: 7 nsects: 4 flags: 0 Sections: - sectname: __text segname: __TEXT addr: 0x0 size: 1 offset: 0x210 align: 2 reloff: 0x0 nreloc: 0 flags: 0x80000400 reserved1: 0x0 reserved2: 0x0 reserved3: 0x0 content: C3 - sectname: __gcc_except_tab segname: __TEXT addr: 0x1 size: 0 offset: 0x211 align: 0 reloff: 0x0 nreloc: 0 flags: 0x0 reserved1: 0x0 reserved2: 0x0 reserved3: 0x0 content: '' - sectname: __eh_frame segname: __TEXT addr: 0x8 size: 72 offset: 0x218 align: 3 reloff: 0x280 nreloc: 7 flags: 0x0 reserved1: 0x0 reserved2: 0x0 reserved3: 0x0 content: 1C00000000000000017A504C5200017810079B0400000010100C0708900100002400000004000000F8FFFFFFFFFFFFFF010000000000000008E7FFFFFFFFFFFFFF0E100000000000 relocations: - address: 0x13 symbolnum: 4 pcrel: true length: 2 extern: true type: 4 scattered: false value: 0 - address: 0x24 symbolnum: 1 pcrel: false length: 2 extern: true type: 5 scattered: false value: 0 - address: 0x24 symbolnum: 2 pcrel: false length: 2 extern: true type: 0 scattered: false value: 0 - address: 0x28 symbolnum: 2 pcrel: false length: 3 extern: true type: 5 scattered: false value: 0 - address: 0x28 symbolnum: 3 pcrel: false length: 3 extern: true type: 0 scattered: false value: 0 - address: 0x39 symbolnum: 2 pcrel: false length: 3 extern: true type: 5 scattered: false value: 0 - address: 0x39 symbolnum: 0 pcrel: false length: 3 extern: true type: 0 scattered: false value: 0 - sectname: __compact_unwind segname: __LD addr: 0x50 size: 32 offset: 0x260 align: 3 reloff: 0x2B8 nreloc: 4 flags: 0x2000000 reserved1: 0x0 reserved2: 0x0 reserved3: 0x0 content: '0000000000000000010000000000024200000000000000000000000000000000' relocations: - address: 0x0 symbolnum: 3 pcrel: false length: 3 extern: true type: 0 scattered: false value: 0 - address: 0x18 symbolnum: 0 pcrel: false length: 3 extern: true type: 0 scattered: false value: 0 - address: 0x10 symbolnum: 4 pcrel: false length: 3 extern: true type: 0 scattered: false value: 0 - address: 0x18 symbolnum: 0 pcrel: false length: 3 extern: true type: 0 scattered: false value: 0 - cmd: LC_SYMTAB cmdsize: 24 symoff: 728 nsyms: 5 stroff: 808 strsize: 57 LinkEditData: NameList: - n_strx: 29 n_type: 0xE n_sect: 2 n_desc: 32 n_value: 1 - n_strx: 41 n_type: 0xE n_sect: 3 n_desc: 0 n_value: 8 - n_strx: 51 n_type: 0xE n_sect: 3 n_desc: 0 n_value: 40 - n_strx: 2 n_type: 0xF n_sect: 1 n_desc: 32 n_value: 0 - n_strx: 7 n_type: 0x1 n_sect: 0 n_desc: 0 n_value: 0 StringTable: - ' ' - _foo - ___gxx_personality_v0 - _exception0 - EH_Frame1 - func.eh ...