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