brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.9 KiB · 8ad9c0f Raw
256 lines · plain
1# REQUIRES: x862# UNSUPPORTED: target=arm{{.*}}-unknown-linux-gnueabihf3# RUN: rm -rf %t; split-file %s %t && cd %t4 5## Compile rel_dylib.o6# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-macos -o rel_dylib.o simple_class.s7 8## Test relative method lists9# RUN: %no-lsystem-lld rel_dylib.o -o rel_dylib.dylib -map rel_dylib.map -dylib -objc_relative_method_lists10# RUN: llvm-objdump --macho --objc-meta-data rel_dylib.dylib  | FileCheck %s --check-prefix=CHK_REL11 12## Test relative method lists + dead-strip13# RUN: %no-lsystem-lld rel_dylib.o -o rel_dylib.dylib -map rel_dylib.map -dylib -objc_relative_method_lists -dead_strip14# RUN: llvm-objdump --macho --objc-meta-data rel_dylib.dylib  | FileCheck %s --check-prefix=CHK_REL15 16## Test traditional method lists (no relative offsets)17# RUN: %no-lsystem-lld rel_dylib.o -o rel_dylib.dylib -map rel_dylib.map -dylib -no_objc_relative_method_lists18# RUN: llvm-objdump --macho --objc-meta-data rel_dylib.dylib  | FileCheck %s --check-prefix=CHK_NO_REL19 20 21CHK_REL:       Contents of (__DATA_CONST,__objc_classlist) section22CHK_REL-NEXT:  _OBJC_CLASS_$_MyClass23CHK_REL:       baseMethods24CHK_REL-NEXT:  entsize 12 (relative)25CHK_REL-NEXT:  count 326CHK_REL-NEXT:   name 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}}) instance_method_0027CHK_REL-NEXT:  types 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}}) v16@0:828CHK_REL-NEXT:    imp 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}}) -[MyClass instance_method_00]29CHK_REL-NEXT:   name 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}}) instance_method_0130CHK_REL-NEXT:  types 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}}) v16@0:831CHK_REL-NEXT:    imp 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}}) -[MyClass instance_method_01]32CHK_REL-NEXT:   name 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}}) instance_method_0233CHK_REL-NEXT:  types 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}}) v16@0:834CHK_REL-NEXT:    imp 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}}) -[MyClass instance_method_02]35 36CHK_REL:       Meta Class37CHK_REL-NEXT:  isa 0x{{[0-9a-f]*}} _OBJC_METACLASS_$_MyClass38CHK_REL:       baseMethods 0x{{[0-9a-f]*}} (struct method_list_t *)39CHK_REL-NEXT:  entsize 12 (relative)40CHK_REL-NEXT:  count 341CHK_REL-NEXT:   name 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}})  class_method_0042CHK_REL-NEXT:  types 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}})  v16@0:843CHK_REL-NEXT:    imp 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}})  +[MyClass class_method_00]44CHK_REL-NEXT:   name 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}})  class_method_0145CHK_REL-NEXT:  types 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}})  v16@0:846CHK_REL-NEXT:    imp 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}})  +[MyClass class_method_01]47CHK_REL-NEXT:   name 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}})  class_method_0248CHK_REL-NEXT:  types 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}})  v16@0:849CHK_REL-NEXT:    imp 0x{{[0-9a-f]*}} (0x{{[0-9a-f]*}})  +[MyClass class_method_02]50 51 52CHK_NO_REL-NOT: (relative)53 54CHK_NO_REL:           Contents of (__DATA_CONST,__objc_classlist) section55CHK_NO_REL-NEXT:      _OBJC_CLASS_$_MyClass56 57CHK_NO_REL:            baseMethods 0x{{[0-9a-f]*}} (struct method_list_t *)58CHK_NO_REL-NEXT:		   entsize 2459CHK_NO_REL-NEXT:		     count 360CHK_NO_REL-NEXT:		      name 0x{{[0-9a-f]*}} instance_method_0061CHK_NO_REL-NEXT:		     types 0x{{[0-9a-f]*}} v16@0:862CHK_NO_REL-NEXT:		       imp -[MyClass instance_method_00]63CHK_NO_REL-NEXT:		      name 0x{{[0-9a-f]*}} instance_method_0164CHK_NO_REL-NEXT:		     types 0x{{[0-9a-f]*}} v16@0:865CHK_NO_REL-NEXT:		       imp -[MyClass instance_method_01]66CHK_NO_REL-NEXT:		      name 0x{{[0-9a-f]*}} instance_method_0267CHK_NO_REL-NEXT:		     types 0x{{[0-9a-f]*}} v16@0:868CHK_NO_REL-NEXT:		       imp -[MyClass instance_method_02]69 70 71CHK_NO_REL:             Meta Class72CHK_NO_REL-NEXT:        _OBJC_METACLASS_$_MyClass73 74CHK_NO_REL:             baseMethods 0x{{[0-9a-f]*}} (struct method_list_t *)75CHK_NO_REL-NEXT:		   entsize 2476CHK_NO_REL-NEXT:		     count 377CHK_NO_REL-NEXT:		      name 0x{{[0-9a-f]*}} class_method_0078CHK_NO_REL-NEXT:		     types 0x{{[0-9a-f]*}} v16@0:879CHK_NO_REL-NEXT:		       imp +[MyClass class_method_00]80CHK_NO_REL-NEXT:		      name 0x{{[0-9a-f]*}} class_method_0181CHK_NO_REL-NEXT:		     types 0x{{[0-9a-f]*}} v16@0:882CHK_NO_REL-NEXT:		       imp +[MyClass class_method_01]83CHK_NO_REL-NEXT:		      name 0x{{[0-9a-f]*}} class_method_0284CHK_NO_REL-NEXT:		     types 0x{{[0-9a-f]*}} v16@0:885CHK_NO_REL-NEXT:		       imp +[MyClass class_method_02]86 87 88######################## Generate simple_class.s #########################89# clang -c simple_class.mm -s -o simple_class.s -target x86_64-apple-macos11 -Oz90 91########################       simple_class.mm       ########################92#  __attribute__((objc_root_class))93#  @interface MyClass94#  - (void)instance_method_00;95#  - (void)instance_method_01;96#  - (void)instance_method_02;97#  + (void)class_method_00;98#  + (void)class_method_01;99#  + (void)class_method_02;100#  @end101#102#  @implementation MyClass103#  - (void)instance_method_00 {}104#  - (void)instance_method_01 {}105#  - (void)instance_method_02 {}106#  + (void)class_method_00 {}107#  + (void)class_method_01 {}108#  + (void)class_method_02 {}109#  @end110#111#  void *_objc_empty_cache;112#113 114#--- objc-macros.s115.macro .objc_selector_def name116	.p2align	2117"\name":118	.cfi_startproc119	ret120	.cfi_endproc121.endm122 123#--- simple_class.s124.include "objc-macros.s"125 126.section	__TEXT,__text,regular,pure_instructions127.build_version macos, 11, 0128 129.objc_selector_def "-[MyClass instance_method_00]"130.objc_selector_def "-[MyClass instance_method_01]"131.objc_selector_def "-[MyClass instance_method_02]"132 133.objc_selector_def "+[MyClass class_method_00]"134.objc_selector_def "+[MyClass class_method_01]"135.objc_selector_def "+[MyClass class_method_02]"136 137.section	__DATA,__objc_data138.globl	_OBJC_CLASS_$_MyClass139.p2align	3, 0x0140_OBJC_CLASS_$_MyClass:141	.quad	_OBJC_METACLASS_$_MyClass142	.quad	0143	.quad	__objc_empty_cache144	.quad	0145	.quad	__OBJC_CLASS_RO_$_MyClass146 147	.globl	_OBJC_METACLASS_$_MyClass148	.p2align	3, 0x0149_OBJC_METACLASS_$_MyClass:150	.quad	_OBJC_METACLASS_$_MyClass151	.quad	_OBJC_CLASS_$_MyClass152	.quad	__objc_empty_cache153	.quad	0154	.quad	__OBJC_METACLASS_RO_$_MyClass155 156	.section	__TEXT,__objc_classname,cstring_literals157L_OBJC_CLASS_NAME_:158	.asciz	"MyClass"159 160	.section	__TEXT,__objc_methname,cstring_literals161L_OBJC_METH_VAR_NAME_:162	.asciz	"class_method_00"163 164	.section	__TEXT,__objc_methtype,cstring_literals165L_OBJC_METH_VAR_TYPE_:166	.asciz	"v16@0:8"167 168	.section	__TEXT,__objc_methname,cstring_literals169L_OBJC_METH_VAR_NAME_.1:170	.asciz	"class_method_01"171 172L_OBJC_METH_VAR_NAME_.2:173	.asciz	"class_method_02"174 175	.section	__DATA,__objc_const176	.p2align	3, 0x0177__OBJC_$_CLASS_METHODS_MyClass:178	.long	24179	.long	3180	.quad	L_OBJC_METH_VAR_NAME_181	.quad	L_OBJC_METH_VAR_TYPE_182	.quad	"+[MyClass class_method_00]"183	.quad	L_OBJC_METH_VAR_NAME_.1184	.quad	L_OBJC_METH_VAR_TYPE_185	.quad	"+[MyClass class_method_01]"186	.quad	L_OBJC_METH_VAR_NAME_.2187	.quad	L_OBJC_METH_VAR_TYPE_188	.quad	"+[MyClass class_method_02]"189 190	.p2align	3, 0x0191__OBJC_METACLASS_RO_$_MyClass:192	.long	3193	.long	40194	.long	40195	.space	4196	.quad	0197	.quad	L_OBJC_CLASS_NAME_198	.quad	__OBJC_$_CLASS_METHODS_MyClass199	.quad	0200	.quad	0201	.quad	0202	.quad	0203 204	.section	__TEXT,__objc_methname,cstring_literals205L_OBJC_METH_VAR_NAME_.3:206	.asciz	"instance_method_00"207 208L_OBJC_METH_VAR_NAME_.4:209	.asciz	"instance_method_01"210 211L_OBJC_METH_VAR_NAME_.5:212	.asciz	"instance_method_02"213 214	.section	__DATA,__objc_const215	.p2align	3, 0x0216__OBJC_$_INSTANCE_METHODS_MyClass:217	.long	24218	.long	3219	.quad	L_OBJC_METH_VAR_NAME_.3220	.quad	L_OBJC_METH_VAR_TYPE_221	.quad	"-[MyClass instance_method_00]"222	.quad	L_OBJC_METH_VAR_NAME_.4223	.quad	L_OBJC_METH_VAR_TYPE_224	.quad	"-[MyClass instance_method_01]"225	.quad	L_OBJC_METH_VAR_NAME_.5226	.quad	L_OBJC_METH_VAR_TYPE_227	.quad	"-[MyClass instance_method_02]"228 229	.p2align	3, 0x0230__OBJC_CLASS_RO_$_MyClass:231	.long	2232	.long	0233	.long	0234	.space	4235	.quad	0236	.quad	L_OBJC_CLASS_NAME_237	.quad	__OBJC_$_INSTANCE_METHODS_MyClass238	.quad	0239	.quad	0240	.quad	0241	.quad	0242 243	.globl	__objc_empty_cache244.zerofill __DATA,__common,__objc_empty_cache,8,3245	.section	__DATA,__objc_classlist,regular,no_dead_strip246	.p2align	3, 0x0247l_OBJC_LABEL_CLASS_$:248	.quad	_OBJC_CLASS_$_MyClass249 250	.section	__DATA,__objc_imageinfo,regular,no_dead_strip251L_OBJC_IMAGE_INFO:252	.long	0253	.long	64254 255.subsections_via_symbols256