1# REQUIRES: x86 2 3# RUN: rm -rf %t; split-file %s %t 4 5# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/foo.s -o %t/foo.o 6# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/bar.s -o %t/bar.o 7# RUN: %lld %t/foo.o %t/bar.o -o %t/main.exe 8# RUN: llvm-otool -l %t/main.exe > %t/objdump 9# RUN: llvm-objdump --macho --data-in-code %t/main.exe >> %t/objdump 10# RUN: FileCheck %s < %t/objdump 11 12# CHECK-LABEL: sectname __text 13# CHECK-NEXT: segname __TEXT 14# CHECK-NEXT: addr 15# CHECK-NEXT: size 16# CHECK-NEXT: offset [[#%,TEXT:]] 17 18# CHECK-LABEL: cmd LC_DATA_IN_CODE 19# CHECK-NEXT: cmdsize 16 20# CHECK-NEXT: dataoff 21# CHECK-NEXT: datasize 16 22 23# CHECK-LABEL: Data in code table (2 entries) 24# CHECK-NEXT: offset length kind 25# CHECK-NEXT: [[#%x,TEXT + 28]] 24 JUMP_TABLE32 26# CHECK-NEXT: [[#%x,TEXT + 68]] 12 JUMP_TABLE32 27 28# RUN: %lld %t/foo.o %t/bar.o -no_data_in_code_info -o %t/main.exe 29# RUN: llvm-otool -l %t/main.exe | FileCheck --check-prefix=OMIT %s 30 31# OMIT-NOT: LC_DATA_IN_CODE 32 33#--- foo.s 34.text 35.globl _main 36.p2align 4, 0x90 37_main: 38pushq %rbp 39movq %rsp, %rbp 40subq $16, %rsp 41movl $0, -4(%rbp) 42movb $0, %al 43callq _bar 44addq $16, %rsp 45popq %rbp 46retq 47.p2align 2, 0x90 48.data_region jt32 49.long 0 50.long 0 51.long 0 52.long 0 53.long 0 54.long 0 55.end_data_region 56 57#--- bar.s 58.text 59.globl _bar 60.p2align 4 61_bar: 62retq 63.p2align 2, 0x90 64.data_region jt32 65.long 0 66.long 0 67.long 0 68.end_data_region 69