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 -lSystem %t/foo.o %t/bar.o -o %t/main.exe 8# RUN: llvm-otool -l %t/main.exe > %t/objdump 9# RUN: llvm-otool -Gv %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 24 22 23# CHECK-LABEL: Data in code table (3 entries) 24# CHECK-NEXT: offset length kind 25# CHECK-NEXT: [[#%x,TEXT + 28]] 24 JUMP_TABLE32 26# CHECK-NEXT: [[#%x,TEXT + 68]] 8 JUMP_TABLE32 27# CHECK-NEXT: [[#%x,TEXT + 84]] 12 JUMP_TABLE32 28 29# RUN: %lld -lSystem %t/foo.o %t/bar.o -no_data_in_code_info -o %t/main.exe 30# RUN: llvm-otool -l %t/main.exe | FileCheck --check-prefix=OMIT %s 31 32# OMIT-NOT: LC_DATA_IN_CODE 33 34# RUN: %lld -lSystem %t/foo.o %t/bar.o -no_data_in_code_info -data_in_code_info -o %t/main.exe 35# RUN: llvm-otool -l %t/main.exe > %t/objdump 36# RUN: llvm-otool -Gv %t/main.exe >> %t/objdump 37# RUN: FileCheck %s < %t/objdump 38 39#--- foo.s 40.text 41.section __TEXT,__StaticInit,regular,pure_instructions 42.p2align 4, 0x90 43_some_init_function: 44retq 45.p2align 2, 0x90 46.data_region jt32 47.long 0 48.long 0 49.end_data_region 50 51.section __TEXT,__text,regular,pure_instructions 52.globl _main 53.p2align 4, 0x90 54_main: 55pushq %rbp 56movq %rsp, %rbp 57subq $16, %rsp 58movl $0, -4(%rbp) 59movb $0, %al 60callq _bar 61addq $16, %rsp 62popq %rbp 63retq 64.p2align 2, 0x90 65.data_region jt32 66.long 0 67.long 0 68.long 0 69.long 0 70.long 0 71.long 0 72.end_data_region 73 74#--- bar.s 75.text 76.globl _bar 77.p2align 4 78_bar: 79retq 80.p2align 2, 0x90 81.data_region jt32 82.long 0 83.long 0 84.long 0 85.end_data_region 86