#␊ |
SYMBOLS_MODULE = Symbols.dylib␊ |
SYMBOL_START= _symbols_module_start␊ |
SYMBOL_ADDR = $(shell printf "%d" 0x`nm -s __DATA __data $(SYMROOT)/boot_embeded.sys | grep " $(SYMBOL_START)$$" | cut -f 1 -d " "`)␊ |
DATA_OFFSET = $(shell otool -l $(SYMROOT)/boot_embeded.sys | grep __data -A 4 | grep __DATA -A 3 | tail -n 1 | cut -f 6 -d " ")␊ |
DATA_ADDR = $(shell printf "%d" `otool -l $(SYMROOT)/boot_embeded.sys | grep __data -A 4 | grep __DATA -A 3 | head -n 2 | tail -n 1 | cut -f 8 -d " "`)␊ |
SYMBOL_ADDR = $(shell printf "%d" 0x`nm -s __DATA __data $(SYMROOT)/boot.sys | grep " $(SYMBOL_START)$$" | cut -f 1 -d " "`)␊ |
DATA_OFFSET = $(shell otool -l $(SYMROOT)/boot.sys | grep __data -A 4 | grep __DATA -A 3 | tail -n 1 | cut -f 6 -d " ")␊ |
DATA_ADDR = $(shell printf "%d" `otool -l $(SYMROOT)/boot.sys | grep __data -A 4 | grep __DATA -A 3 | head -n 2 | tail -n 1 | cut -f 8 -d " "`)␊ |
PATCH_ADDR = $(shell echo ${SYMBOL_ADDR}-${DATA_ADDR}+${DATA_OFFSET} | bc)␊ |
␊ |
␊ |
|
␊ |
boot: embedded.h machOconv $(OBJS) $(LIBDEP) ␊ |
␉@echo "\t[LD] boot.sys"␊ |
␉@$(LD) -static -Wl,-preload -Wl,-segaddr,__INIT,$(BOOT2ADDR) \␊ |
␉@$(LD) -static -Wl,-preload -Wl,-segaddr,__INIT,$(BOOT2ADDR) \␊ |
␉ -nostdlib -arch i386 -Wl,-segalign,20 \␊ |
␉␉-o $(SYMROOT)/boot.sys $(filter %.o,$^) $(LIBS) -lcc_kext␊ |
␊ |
␉@cp $(SYMROOT)/boot.sys $(SYMROOT)/boot2.sys␊ |
␊ |
␉@make Symbols.dylib␊ |
␉@${RM} $(SYMROOT)/boot.sys␊ |
␊ |
␉@echo "\t[LD] boot_embeded.sys"␊ |
␉@echo "\t[LD] boot.sys"␊ |
␉@$(LD) -static -Wl,-preload -Wl,-segaddr,__INIT,$(BOOT2ADDR) \␊ |
␉ -nostdlib -arch i386 -Wl,-segalign,20 \␊ |
␉␉-Wl,-sectcreate,__DATA,__Symbols,$(SYMROOT)/Symbols.dylib \␊ |
␉␉-o $(SYMROOT)/boot_embeded.sys $(filter %.o,$^) $(LIBS) -lcc_kext␊ |
␉␉-o $(SYMROOT)/boot.sys $(filter %.o,$^) $(LIBS) -lcc_kext␊ |
␊ |
␊ |
␊ |
␉@ld -arch i386 \␊ |
␉-undefined dynamic_lookup \␊ |
␉-dylib -read_only_relocs suppress \␊ |
␉-S -x -Z -dead_strip_dylibs \␊ |
␉-no_uuid \␊ |
␉-final_output Symbols.dylib \␊ |
␉-final_output Symbols \␊ |
␉$(filter %.o,$^) $(LIBS) \␊ |
␉-o $(OBJROOT)/Symbols_LINKER_ONLY.dylib␊ |
␊ |
␊ |
␊ |
␉@make embed_symbols␉␉# this is done in a sub process after boot.sys exists so the strings are populated correctly␊ |
␉@${RM} $(SYMROOT)/boot2.sys␊ |
␊ |
␉@${RM} $(SYMROOT)/${SYMBOLS_MODULE}␊ |
␊ |
|
embed_symbols: machOconv␊ |
␉@echo ================= Embedding Symbols.dylib =================␊ |
␉@echo "\t[MACHOCONV] boot"␊ |
␉@$(SYMROOT)/machOconv $(SYMROOT)/boot.sys $(SYMROOT)/boot &> /dev/null␊ |
␉@$(SYMROOT)/machOconv $(SYMROOT)/boot2.sys $(SYMROOT)/boot &> /dev/null␊ |
␊ |
␉@echo ******* Patching at $(PATCH_ADDR) ******␊ |
␉@stat -f%z $(SYMROOT)/boot | perl -ane "print pack('V',@F[0]);" | dd conv=notrunc of=${SYMROOT}/boot_embeded.sys bs=1 count=4 seek=$(PATCH_ADDR)␉ &> /dev/null␊ |
␉@echo "\t[MACHOCONV] boot_embeded"␊ |
␉@$(SYMROOT)/machOconv $(SYMROOT)/boot_embeded.sys $(SYMROOT)/boot␊ |
␉@stat -f%z $(SYMROOT)/boot | perl -ane "print pack('V',@F[0]);" | dd conv=notrunc of=${SYMROOT}/boot.sys bs=1 count=4 seek=$(PATCH_ADDR)␉ &> /dev/null␊ |
␉@echo "\t[MACHOCONV] boot"␊ |
␉@$(SYMROOT)/machOconv $(SYMROOT)/boot.sys $(SYMROOT)/boot␊ |
␊ |
␊ |
prompt.o: vers.h␊ |
|
␉-final_output Symbols \␊ |
␉-exported_symbols_list ${OBJROOT}/Symbols.save \␊ |
␉${OBJROOT}/Symbols.o \␊ |
␉-macosx_version_min 10.6 \␊ |
␉-o $(SYMROOT)/${SYMBOLS_MODULE} ␊ |
␊ |
␉@##size $(SYMROOT)/${SYMBOLS_MODULE} ␊ |