Date: Mon, 21 Jul 2014 16:57:26 GMT From: dpl@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r271199 - in soc2014/dpl/netmap-ipfwjit: . sys/netpfil/ipfw Message-ID: <201407211657.s6LGvQ7p077996@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dpl Date: Mon Jul 21 16:57:25 2014 New Revision: 271199 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=271199 Log: Improve jit.cc, and Makefiles. Modified: soc2014/dpl/netmap-ipfwjit/Makefile.kipfw soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/ip_fw2.c soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.cc soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.h Modified: soc2014/dpl/netmap-ipfwjit/Makefile.kipfw ============================================================================== --- soc2014/dpl/netmap-ipfwjit/Makefile.kipfw Mon Jul 21 15:44:59 2014 (r271198) +++ soc2014/dpl/netmap-ipfwjit/Makefile.kipfw Mon Jul 21 16:57:25 2014 (r271199) @@ -93,7 +93,7 @@ E_CFLAGS += -Dradix MOD := kipfw -LIBS= -lpthread +LIBS= -lpthread `llvm-config-devel --ldflags --libs jit support` CFLAGS = $(E_CFLAGS) IPFW_OBJS= $(IPFW_SRCS:%.c=%.o) @@ -136,7 +136,7 @@ EFILES = $(foreach i,$(EDIRS),$(subst $(empty) , $(i)/, $(EFILES_$(i): = ))) BCFLAGS=-emit-llvm -c -CXXFLAGS= `llvm-config-devel --cxxflags --libs jit support` +CXXFLAGS= -c `llvm-config-devel --cxxflags` include_e: -@echo "Building $(OBJPATH)/include_e ..." @@ -150,20 +150,20 @@ ip_fw2.o ip_dummynet.o: # EFLAGS= -include missing.h ip_fw2.o: jit.o +#Generate the actual bytecode to be used +../ip_fw_rules.bc: + $(CC) $(CFLAGS) $(BCFLAGS) -o ../ip_fw_rules.bc ../sys/netpfil/ipfw/ip_fw_rules.h + radix.o:# CFLAGS += -U_KERNEL # session.o: CFLAGS = -O2 nm_util.o: CFLAGS = -O2 -Wall -Werror $(NETMAP_FLAGS) -$(MOD): $(IPFW_OBJS) ../ip_fw_rules.bc jit.o +$(MOD): $(IPFW_OBJS) jit.o $(MSG) " LD $@" $(HIDE)$(CC) -o $@ $^ $(LIBS) -#Generate the actual bytecode to be used -../ip_fw_rules.bc: - @$(CC) $(CFLAGS) $(BCFLAGS) -o ../ip_fw_rules.bc ../sys/netpfil/ipfw/ip_fw_rules.h - -jit.o: jit.cc +jit.o: jit.cc ../ip_fw_rules.bc @clang++ $(CXXFLAGS) ../sys/netpfil/ipfw/jit.cc -o ./jit.o clean: Modified: soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/ip_fw2.c ============================================================================== --- soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/ip_fw2.c Mon Jul 21 15:44:59 2014 (r271198) +++ soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/ip_fw2.c Mon Jul 21 16:57:25 2014 (r271199) @@ -232,7 +232,7 @@ static inline void rule_reass(struct ip_fw *, int, struct ip_fw_chain *, int, struct ip *, struct ip_fw_args *, struct mbuf *, int *, int *, int *); /* JIT compiling API */ -static void ipfw_jit_init(); +void ipfw_jit_init(); /* * Each rule belongs to one of 32 different sets (0..31). Modified: soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.cc ============================================================================== --- soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.cc Mon Jul 21 15:44:59 2014 (r271198) +++ soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.cc Mon Jul 21 16:57:25 2014 (r271199) @@ -1,4 +1,6 @@ /* JIT compilation code */ +#include <iostream> + #include <llvm/ADT/OwningPtr.h> #include <llvm/Bitcode/ReaderWriter.h> #include <llvm/IR/LLVMContext.h> @@ -8,7 +10,6 @@ using namespace llvm; -ErrorOr<Module *> ptr; Module *mod; LLVMContext con; LLVMContext &c = con; @@ -17,8 +18,19 @@ static void ipfw_jit_init() { - ptr = mod; /* We load the bc for JIT compilation */ - MemoryBuffer::getFile("ip_fw_rules.bc", buffer); + error_code ec = MemoryBuffer::getFile("runtime.bc", buffer); + if (ec) { + std::cerr << "Failed to open runtime.bc: " << ec.message() << "\n"; + exit(EXIT_FAILURE); + } + + ErrorOr<Module*> ptr = parseBitcodeFile(buffer.get(), con); + if ((ec = ptr.getError())) + { + std::cerr << "Failed to parse runtime.bc: " << ec.message() << "\n"; + exit(EXIT_FAILURE); + } + mod = ptr.get(); ptr = parseBitcodeFile(buffer.get(), c); } Modified: soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.h ============================================================================== --- soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.h Mon Jul 21 15:44:59 2014 (r271198) +++ soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.h Mon Jul 21 16:57:25 2014 (r271199) @@ -1,2 +1,2 @@ - -static void ipfw_jit_init(); +/* JIT code headers */ +void ipfw_jit_init();
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201407211657.s6LGvQ7p077996>
