- sectTEXTB = (void *) getsegdatafromheader(
- &_mh_execute_header, "__TEXT", §SizeTEXT);
- sectDATAB = (void *) getsegdatafromheader(
- &_mh_execute_header, "__DATA", §SizeDATA);
- sectOBJCB = (void *) getsegdatafromheader(
- &_mh_execute_header, "__OBJC", §SizeOBJC);
- sectLINKB = (void *) getsegdatafromheader(
- &_mh_execute_header, "__LINKEDIT", §SizeLINK);
- sectHIBB = (void *)getsegdatafromheader(
- &_mh_execute_header, "__HIB", §SizeHIB);
- sectPRELINKB = (void *) getsegdatafromheader(
- &_mh_execute_header, "__PRELINK", §SizePRELINK);
-
- etext = (vm_offset_t) sectTEXTB + sectSizeTEXT;
- edata = (vm_offset_t) sectDATAB + sectSizeDATA;
+ sHIB = segHIBB;
+ eHIB = segHIBB + segSizeHIB;
+ vm_hib_base = sHIB;
+ /* Zero-padded from ehib to stext if text is 2M-aligned */
+ stext = segTEXTB;
+ lowGlo.lgStext = stext;
+ etext = (vm_offset_t) round_page_64(lastsectTEXT->addr + lastsectTEXT->size);
+ /* Zero-padded from etext to sdata if text is 2M-aligned */
+ sdata = segDATAB;
+ edata = segDATAB + segSizeDATA;
+
+ sconst = segCONST->vmaddr;
+ segSizeConst = segCONST->vmsize;
+ econst = sconst + segSizeConst;
+
+ assert(((sconst|econst) & PAGE_MASK) == 0);
+
+ DPRINTF("segTEXTB = %p\n", (void *) segTEXTB);
+ DPRINTF("segDATAB = %p\n", (void *) segDATAB);
+ DPRINTF("segLINKB = %p\n", (void *) segLINKB);
+ DPRINTF("segHIBB = %p\n", (void *) segHIBB);
+ DPRINTF("segPRELINKTEXTB = %p\n", (void *) segPRELINKTEXTB);
+ DPRINTF("segPRELINKINFOB = %p\n", (void *) segPRELINKINFOB);
+ DPRINTF("sHIB = %p\n", (void *) sHIB);
+ DPRINTF("eHIB = %p\n", (void *) eHIB);
+ DPRINTF("stext = %p\n", (void *) stext);
+ DPRINTF("etext = %p\n", (void *) etext);
+ DPRINTF("sdata = %p\n", (void *) sdata);
+ DPRINTF("edata = %p\n", (void *) edata);
+ DPRINTF("sconst = %p\n", (void *) sconst);
+ DPRINTF("econst = %p\n", (void *) econst);
+ DPRINTF("kernel_top = %p\n", (void *) &last_kernel_symbol);
+
+ vm_kernel_base = sHIB;
+ vm_kernel_top = (vm_offset_t) &last_kernel_symbol;
+ vm_kernel_stext = stext;
+ vm_kernel_etext = etext;
+ vm_prelink_stext = segPRELINKTEXTB;
+ vm_prelink_etext = segPRELINKTEXTB + segSizePRELINKTEXT;
+ vm_prelink_sinfo = segPRELINKINFOB;
+ vm_prelink_einfo = segPRELINKINFOB + segSizePRELINKINFO;
+ vm_slinkedit = segLINKB;
+ vm_elinkedit = segLINKB + segSizeLINK;
+ vm_kernel_slid_base = vm_kext_base + vm_kernel_slide;
+ vm_kernel_slid_top = vm_prelink_einfo;