diff --git a/com.oracle.truffle.r.native/fficall/jni/src/alloc.c b/com.oracle.truffle.r.native/fficall/jni/src/alloc.c
index d8aeadae4bde78c8a55fc21faee2156f35411540..33f20cc6266e86e6244bfdbe5555fde4911d48e1 100644
--- a/com.oracle.truffle.r.native/fficall/jni/src/alloc.c
+++ b/com.oracle.truffle.r.native/fficall/jni/src/alloc.c
@@ -51,6 +51,10 @@ char* S_alloc(long n, int size) {
 	return p;
 }
 
+char* S_realloc(char *p, long a, long b, int size) {
+	return unimplemented("S_realloc");
+}
+
 void allocExit() {
     int i;
     for (i = 0; i < tMemTableIndex; i++) {
diff --git a/com.oracle.truffle.r.native/fficall/jni/src/arithmetic.c b/com.oracle.truffle.r.native/fficall/jni/src/arithmetic.c
index 908b4c5ee488206f32d772d496df93a50286bd12..c387fdea7ef1f20c4aac2cfe1b1c18d332f7d2f1 100644
--- a/com.oracle.truffle.r.native/fficall/jni/src/arithmetic.c
+++ b/com.oracle.truffle.r.native/fficall/jni/src/arithmetic.c
@@ -163,3 +163,9 @@ double R_pow_di(double x, int n)
     return xn;
 }
 
+double R_pow(double x, double y) {
+	unimplemented("R_pow");
+    return 0;
+}
+
+
diff --git a/com.oracle.truffle.r.native/fficall/jni/src/misc.c b/com.oracle.truffle.r.native/fficall/jni/src/misc.c
index 4133f06d6e2d9ffe93777745860276ea57b35d8d..27452f47f7f0b888468c449a1febacbacb6c47d1 100644
--- a/com.oracle.truffle.r.native/fficall/jni/src/misc.c
+++ b/com.oracle.truffle.r.native/fficall/jni/src/misc.c
@@ -125,6 +125,18 @@ void * Riconv_open (const char* tocode, const char* fromcode) {
 	return unimplemented("Riconv_open");
 }
 
+double R_atof(const char *str) {
+	unimplemented("R_atof");
+	return 0;
+}
+
+double R_strtod(const char *c, char **end) {
+	unimplemented("R_strtod");
+	return 0;
+}
+
+
+
 const char *reEnc(const char *x, cetype_t ce_in, cetype_t ce_out, int subst) {
     // TODO: proper implementation of reEnc
     return x;
@@ -137,3 +149,10 @@ SEXP R_PromiseExpr(SEXP x) {
 SEXP R_ClosureExpr(SEXP x) {
 	return unimplemented("R_ClosureExpr");
 }
+
+#include <R_ext/Parse.h>
+
+SEXP R_ParseVector(SEXP x, int y, ParseStatus *z, SEXP w) {
+	return unimplemented("R_ParseVector");
+}
+
diff --git a/com.oracle.truffle.r.native/fficall/jni/src/rf_functions.c b/com.oracle.truffle.r.native/fficall/jni/src/rf_functions.c
index c2427ab80885f9229e35ec84bcbf4a4813803af5..4346dfbf061a61148db1b9214310542f67cb613e 100644
--- a/com.oracle.truffle.r.native/fficall/jni/src/rf_functions.c
+++ b/com.oracle.truffle.r.native/fficall/jni/src/rf_functions.c
@@ -280,6 +280,10 @@ SEXP Rf_mkCharCE(const char *x, cetype_t y) {
 	return NULL;
 }
 
+SEXP Rf_mkCharLen(const char *x, int y) {
+	return unimplemented("Rf_mkCharLen");
+}
+
 SEXP Rf_mkCharLenCE(const char *x, int len, cetype_t enc) {
 	JNIEnv *thisenv = getEnv();
 	char buf[len + 1];
@@ -465,6 +469,18 @@ SEXP R_FindNamespace(SEXP info) {
 	return checkRef(thisenv, result);
 }
 
+SEXP Rf_lengthgets(SEXP x, R_len_t y) {
+	return unimplemented("Rf_lengthgets");
+}
+
+SEXP Rf_xlengthgets(SEXP x, R_xlen_t y) {
+	return unimplemented("Rf_xlengthgets");
+
+}
+
+SEXP Rf_namesgets(SEXP x, SEXP y) {
+	return unimplemented("Rf_namesgets");
+}
 
 SEXP GetOption1(SEXP tag)
 {
@@ -528,3 +544,4 @@ void Rf_gsetVar(SEXP symbol, SEXP value, SEXP rho)
 	(*thisenv)->CallStaticObjectMethod(thisenv, CallRFFIHelperClass, Rf_gsetVarMethodID, symbol, value, rho);
 }
 
+
diff --git a/com.oracle.truffle.r.native/fficall/jni/src/rmathc.c b/com.oracle.truffle.r.native/fficall/jni/src/rmathc.c
index a5265943a04f2537a9273d7f7aaeb49a29860342..c847d6e6a3054a20e357a7e363ad8c920ffe48e6 100644
--- a/com.oracle.truffle.r.native/fficall/jni/src/rmathc.c
+++ b/com.oracle.truffle.r.native/fficall/jni/src/rmathc.c
@@ -31,16 +31,28 @@ double Rf_dnorm(double a, double b, double c, int d) {
     return 0;
 }
 
+double Rf_dnorm4(double a, double b, double c, int d) {
+    return Rf_dnorm(a, b, c, d);
+}
+
 double Rf_pnorm(double a, double b, double c, int d, int e) {
     unimplemented("Rf_pnorm");
     return 0;
 }
 
+double Rf_pnorm5(double a, double b, double c, int d, int e) {
+    return Rf_pnorm(a, b, c, d, e);
+}
+
 double Rf_qnorm(double a, double b, double c, int d, int e) {
     unimplemented("Rf_qnorm");
     return 0;
 }
 
+double Rf_qnorm5(double a, double b, double c, int d, int e) {
+    return Rf_qnorm(a, b, c, d, e);
+}
+
 double Rf_rnorm(double a, double b) {
     unimplemented("Rf_rnorm");
     return 0;
diff --git a/initial.package.blacklist b/com.oracle.truffle.r.test.cran/initial.package.blacklist
similarity index 94%
rename from initial.package.blacklist
rename to com.oracle.truffle.r.test.cran/initial.package.blacklist
index 8fa909e3932b902b3b0ad82783fdba0875683a46..55641c8d2a98ea6e96aad62f2a051d480570ade8 100644
--- a/initial.package.blacklist
+++ b/com.oracle.truffle.r.test.cran/initial.package.blacklist
@@ -118,6 +118,9 @@ Reason: native
 Package: deSolve
 Reason: native
 
+Package: wle
+Reason: native
+
 Package: matrixStats
 Reason: S4
 
@@ -178,6 +181,12 @@ Reason: serialize
 Package: cubfits
 Reason: serialize
 
+Package: NLP
+Reason: serialize
+
+Package: proxy
+Reason: serialize
+
 Package: appell
 Reason: fortran
 
@@ -199,5 +208,8 @@ Reason: fortran
 Package: cvplogistic
 Reason: fortran
 
+Package: sparseLDA
+Reason: fortran
+
 Package: rJava
 Reason: java
diff --git a/com.oracle.truffle.r.test.cran/r/install.cran.packages.R b/com.oracle.truffle.r.test.cran/r/install.cran.packages.R
index 9a190f767550400d48a598f03ce25543aab653cf..702d1b9e4fef8feb629b3c2d23841ea5e348559b 100644
--- a/com.oracle.truffle.r.test.cran/r/install.cran.packages.R
+++ b/com.oracle.truffle.r.test.cran/r/install.cran.packages.R
@@ -169,7 +169,8 @@ set.package.blacklist <- function() {
 set.initial.package.blacklist <- function() {
 	if (is.na(initial.blacklist.file)) {
 		# not set on command line
-		initial.blacklist.file <<- Sys.getenv("INITIAL_PACKAGE_BLACKLIST", unset="initial.package.blacklist")
+		this_package <- "com.oracle.truffle.r.test.cran"
+		initial.blacklist.file <<- Sys.getenv("INITIAL_PACKAGE_BLACKLIST", unset=file.path(this_package, "initial.package.blacklist"))
 	}
 
 }