#include <mach/vm_param.h>
#if __LP64__
+#if __arm64e__
+// 0x6AE1
+# define PTR(x) .quad x@AUTH(da, 27361, addr)
+#else
# define PTR(x) .quad x
+#endif
#else
# define PTR(x) .long x
#endif
+// These offsets are populated by the dyld shared cache builder.
+// They point to memory allocatd elsewhere in the shared cache.
+
.section __TEXT,__objc_opt_ro
.align 3
.private_extern __objc_opt_data
__objc_opt_data:
-.long 13 /* table.version */
+.long 15 /* table.version */
+.long 0 /* table.flags */
.long 0 /* table.selopt_offset */
-.long 0 /* table.headeropt_offset */
-.long 0 /* table.clsopt_offset */
-.space PAGE_MAX_SIZE-16
-
-/* space for selopt, smax/capacity=262144, blen/mask=262143+1 */
-.space 262144 /* mask tab */
-.space 524288 /* checkbytes */
-.space 524288*4 /* offsets */
-
-/* space for clsopt, smax/capacity=32768, blen/mask=16383+1 */
-.space 16384 /* mask tab */
-.space 32768 /* checkbytes */
-.space 32768*12 /* offsets to name and class and header_info */
-.space PAGE_MAX_SIZE /* some duplicate classes */
-
-/* space for protocolopt, smax/capacity=8192, blen/mask=4095+1 */
-.space 4096 /* mask tab */
-.space 8192 /* checkbytes */
-.space 8192*4 /* offsets */
-
-
-.section __DATA,__objc_opt_rw
-.align 3
-.private_extern __objc_opt_rw_data
-__objc_opt_rw_data:
-/* space for header_info structures */
-.space 32768
-
-/* space for 8192 protocols */
-#if __LP64__
-.space 8192 * 11 * 8
-#else
-.space 8192 * 11 * 4
-#endif
+.long 0 /* table.headeropt_ro_offset */
+.long 0 /* table.clsopt_offset */
+.long 0 /* table.protocolopt_offset */
+.long 0 /* table.headeropt_rw_offset */
+.space PAGE_MAX_SIZE-28
/* section of pointers that the shared cache optimizer wants to know about */
.section __DATA,__objc_opt_ptrs
.align 3
-#if TARGET_OS_MAC && !TARGET_OS_IPHONE && __i386__
+#if TARGET_OS_OSX && __i386__
// old ABI
.globl .objc_class_name_Protocol
PTR(.objc_class_name_Protocol)