From 0a6f2b0a039a9f31d9cc55ce45bde83437813b4a Mon Sep 17 00:00:00 2001 From: comex Date: Mon, 28 Mar 2011 23:23:59 -0400 Subject: [PATCH] twoddle --- Makefile | 24 +++++++++++++++++++----- make_kernel_patchfile.c | 7 +++++-- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 7e6ad3e..42e5ee9 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,23 @@ DATA = $(word 1,$(wildcard ./data ../data)) include $(DATA)/Makefile.common -OBJS = check_sanity make_kernel_patchfile apply_patchfile -all: .settings $(OBJS) -%: %.c + +BINS := check_sanity make_kernel_patchfile apply_patchfile sandboxc.c +all: .settings .data $(BINS) +.data: make -C $(DATA) - $(GCC) $(CFLAGS) -o $@ $< -I$(DATA) $(DATA)/libdata.a +%.o: %.c + $(GCC) -c -o $@ $< -I$(DATA) +sandbox.o: sandbox.S + $(SDK_GCC) -c -o $@ $< +sandboxc.c: sandbox.o + xxd -i sandbox.o > sandboxc.c + +check_sanity: check_sanity.o + $(GCC) -o $@ $^ $(DATA)/libdata.a +apply_patchfile: apply_patchfile.o + $(GCC) -o $@ $^ $(DATA)/libdata.a +make_kernel_patchfile: make_kernel_patchfile.o sandboxc.o + $(GCC) -o $@ $^ $(DATA)/libdata.a + clean: - rm -f $(OBJS) + rm -f $(BINS) *.o diff --git a/make_kernel_patchfile.c b/make_kernel_patchfile.c index 3b447bd..db86c2b 100644 --- a/make_kernel_patchfile.c +++ b/make_kernel_patchfile.c @@ -4,6 +4,9 @@ #include #include "lambda.h" +extern unsigned char sandbox_o[]; +extern unsigned int sandbox_o_len; + int patchfd; static inline void patch_with_range(const char *name, addr_t addr, prange_t pr) { @@ -179,9 +182,9 @@ int main(int argc, char **argv) { b_init(&kernel); b_init(&sandbox); b_load_macho(&kernel, argv[1], false); - b_load_macho(&sandbox, argv[2], true); + b_prange_load_macho(&sandbox, (prange_t) {&sandbox_o, sandbox_o_len}, "sandbox.o"); - patchfd = open(argv[3], O_WRONLY | O_CREAT | O_TRUNC, 0644); + patchfd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0644); if(patchfd == -1) { edie("could not open patchfd"); }