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-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 -lSystem %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# RUN: %lld -lSystem %t/foo.o %t/bar.o -no_data_in_code_info -data_in_code_info -o %t/main.exe 34# RUN: llvm-otool -l %t/main.exe > %t/objdump 35# RUN: llvm-objdump --macho --data-in-code %t/main.exe >> %t/objdump 36# RUN: FileCheck %s < %t/objdump 37 38#--- foo.s 39.text 40.globl _main 41.p2align 4, 0x90 42_main: 43pushq %rbp 44movq %rsp, %rbp 45subq $16, %rsp 46movl $0, -4(%rbp) 47movb $0, %al 48callq _bar 49addq $16, %rsp 50popq %rbp 51retq 52.p2align 2, 0x90 53.data_region jt32 54.long 0 55.long 0 56.long 0 57.long 0 58.long 0 59.long 0 60.end_data_region 61 62#--- bar.s 63.text 64.globl _bar 65.p2align 4 66_bar: 67retq 68.p2align 2, 0x90 69.data_region jt32 70.long 0 71.long 0 72.long 0 73.end_data_region 74