socsvn commit: r271199 - in soc2014/dpl/netmap-ipfwjit: . sys/netpfil/ipfw

dpl at FreeBSD.org dpl at FreeBSD.org
Mon Jul 21 16:57:27 UTC 2014


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:
 	- at 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();


More information about the svn-soc-all mailing list