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