diff --git a/libElfDep/include/libElfDep.hpp b/libElfDep/include/libElfDep.hpp
index 7ab48cfafbd313a6f97a1db0ec9090eea9ee2370..b4444eba3f3d5b487f7f48758ee90929b3ce7f24 100644
--- a/libElfDep/include/libElfDep.hpp
+++ b/libElfDep/include/libElfDep.hpp
@@ -55,8 +55,8 @@ class ElfDependencies_t : public Transform
 		private:
 			bool add_dl_support();
 			Instruction_t* find_runtime_resolve(DataScoop_t* gotplt_scoop);
-			void add_got_entry(const std::string& name);
-			bool add_got_entries();
+			DataScoop_t* add_got_entry(const std::string& name);
+			//bool add_got_entries();
 			bool add_libdl_as_needed_support(string libName);
 			bool execute();
 
diff --git a/libElfDep/src/elfdep.cpp b/libElfDep/src/elfdep.cpp
index dd476260560b3e0ab248cc58daac6a90d26ea5bd..9746052bc2a30cb7fb496bf9c911dc751a8a28c7 100644
--- a/libElfDep/src/elfdep.cpp
+++ b/libElfDep/src/elfdep.cpp
@@ -185,13 +185,29 @@ ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_Rela,T_Elf_Dyn,reloc_ty
 template<typename T_Elf_Sym, typename T_Elf_Rela, typename T_Elf_Dyn, int reloc_type, int rela_shift, int ptrsize>
 pair<DataScoop_t*,int> ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_Rela,T_Elf_Dyn,reloc_type,rela_shift,ptrsize>::appendGotEntry(const string &name)
 {
-	assert(0);
+	auto got_scoop=add_got_entry(name);
+	return {got_scoop,0};
 }
 
 template<typename T_Elf_Sym, typename T_Elf_Rela, typename T_Elf_Dyn, int reloc_type, int rela_shift, int ptrsize>
 Instruction_t* ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_Rela,T_Elf_Dyn,reloc_type,rela_shift,ptrsize>::appendPltEntry(const string &name)
 {
-	assert(0);
+
+	static int labelcounter=0;
+
+	stringstream labelstream;
+	labelstream << "L_pltentry_" << labelcounter++;
+
+	auto got_scoop=add_got_entry(name);
+
+	auto newinsn=addNewAssembly(labelstream.str()+": jmp [rel "+labelstream.str()+"]");
+	
+	auto newreloc=new Relocation_t(BaseObj_t::NOT_IN_DATABASE, 0, "pcrel", got_scoop);
+
+	newinsn->GetRelocations().insert(newreloc);
+	getFileIR()->GetRelocations().insert(newreloc);
+
+	return newinsn;
 }
 
 
@@ -200,7 +216,6 @@ Instruction_t* ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_Rela,T_E
 
 // please  keep this if 0, as we likely want to add plt/got entries in a library later, but
 // we need a use case to test this code -- it was copied from CFI.
-#if 0
 
 template<typename T_Elf_Sym, typename T_Elf_Rela, typename T_Elf_Dyn, int reloc_type, int rela_shift, int ptrsize>
 Instruction_t* ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_Rela,T_Elf_Dyn,reloc_type,rela_shift,ptrsize>::find_runtime_resolve(DataScoop_t* gotplt_scoop)
@@ -222,7 +237,7 @@ Instruction_t* ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_Rela,T_E
 }
 
 template<typename T_Elf_Sym, typename T_Elf_Rela, typename T_Elf_Dyn, int reloc_type, int rela_shift, int ptrsize>
-void ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_Rela,T_Elf_Dyn,reloc_type,rela_shift,ptrsize>::add_got_entry(const std::string& name)
+DataScoop_t* ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_Rela,T_Elf_Dyn,reloc_type,rela_shift,ptrsize>::add_got_entry(const std::string& name)
 {
 	const auto firp=getFileIR();
 	// find relevant scoops
@@ -304,8 +319,11 @@ void ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_Rela,T_Elf_Dyn,rel
 			dyn_entry.d_un.d_val-=sizeof(T_Elf_Rela);
 
 	}
+	return external_func_addr_scoop;
 }
 
+#if 0
+
 template<typename T_Elf_Sym, typename T_Elf_Rela, typename T_Elf_Dyn, int reloc_type, int rela_shift, int ptrsize>
 bool ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_Rela,T_Elf_Dyn,reloc_type,rela_shift,ptrsize>::add_got_entries()
 {
diff --git a/libElfDep/test/SConscript b/libElfDep/test/SConscript
index 46b24492b5cfd7c8c81a978d5452a73998253918..e07d67e74ee3ab43ca4acdfd671107c86bed4eea 100644
--- a/libElfDep/test/SConscript
+++ b/libElfDep/test/SConscript
@@ -10,7 +10,7 @@ myenv.Replace(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME'])
 myenv.Replace(ZIPR_HOME=os.environ['ZIPR_HOME'])
 myenv.Replace(ZIPR_SDK=os.environ['ZIPR_SDK'])
 myenv.Replace(ZIPR_INSTALL=os.environ['ZIPR_INSTALL'])
-myenv.Append(CXXFLAGS = " -std=c++11 -Wall ")
+myenv.Replace(CXXFLAGS = " -g -std=c++11 -Wall ")
 
 cpppath=''' 
 	 $SECURITY_TRANSFORMS_HOME/include 
diff --git a/libElfDep/test/edt.cpp b/libElfDep/test/edt.cpp
index dce737d0c65de94e62c123fc1cf025109803566a..12e1ea24f4bbab211770e2bebe8589d88c9886f6 100644
--- a/libElfDep/test/edt.cpp
+++ b/libElfDep/test/edt.cpp
@@ -40,14 +40,24 @@ int ElfDep_Tester_t::execute()
 
 
 	// insert the instrumentation
-	auto tmp=(Instruction_t*)NULL;
-	auto old_entry=insertAssemblyBefore(getFileIR(), insert_loc," call 0 ", edpcb) ;
-	(void)old_entry; // avoid warning, but label the return value from insertAssemblyBefore
-	tmp=insert_loc;
-	tmp=insertAssemblyAfter(getFileIR(), tmp," mov rcx, [rel 0x0]");
+	auto tmp=insert_loc;
+    	(void)insertAssemblyBefore(getFileIR(),tmp," push rdi") ;
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," push rsi ") ;
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," push rdx") ;
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," push rcx ") ;
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," push r8 ") ;
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," push r9 ") ;
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," call 0 ", edpcb) ;
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," L1: mov rcx, [rel L1]");
 	auto got_insn=tmp;
-	tmp=insertAssemblyAfter(getFileIR(), tmp," inc [rcx]");
-	tmp=insertAssemblyAfter(getFileIR(), tmp," call 0", edpcb);
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," inc dword [rcx]");
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," call 0", edpcb);
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," pop r9");
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," pop r8");
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," pop rcx");
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," pop rdx");
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," pop rsi");
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," pop rdi");
 
 
 	// map the load to point at the GOT entry.
diff --git a/libElfDep/test/elf_dep_test.cpp b/libElfDep/test/elf_dep_test.cpp
index fef1a6cd0549124216bc925993b29f9442513f4e..5f77c041e5159998302399f3bd257bc6163e4675 100644
--- a/libElfDep/test/elf_dep_test.cpp
+++ b/libElfDep/test/elf_dep_test.cpp
@@ -1,5 +1,7 @@
 
 #include <stdio.h>
+extern "C"
+{
 
 int elf_dep_test_var=0;
 
@@ -8,3 +10,4 @@ void elf_dep_test_callback()
 	printf("Elf_dep_test var = %d\n", elf_dep_test_var);
 }
 
+}
diff --git a/libElfDep/test/testit.sh b/libElfDep/test/testit.sh
index c8f526e49f3fe9c74df8a8d02ef4edd4246cf101..051b6c0133b5fc47f9a961516065161c9533ccdb 100755
--- a/libElfDep/test/testit.sh
+++ b/libElfDep/test/testit.sh
@@ -2,16 +2,21 @@
 
 cleanup()
 {
-	echo test failed.
+	echo "************"
+	echo "test failed."
+	echo "************"
 	exit 1
 }
+
 	
 # make sure xforms are built
 scons || cleanup
 
 $PSZ /bin/ls ./xxx -c move_globals=on -o move_globals:--elftables -c edt=on || cleanup
  
-/bin/ls /tmp |tee tmp.out || cleanup
-./xxx /tmp |tee edt.out || cleanup
+/bin/ls /tmp || cleanup
+./xxx /tmp || cleanup
 
-echo test passed.
+echo
+echo "test passed."
+echo
diff --git a/libcapstone b/libcapstone
index 443f82ee74f8e0308d53f5833414c07cd866219f..4f05e83334ec6a10e1ed93018affe9091a576f84 160000
--- a/libcapstone
+++ b/libcapstone
@@ -1 +1 @@
-Subproject commit 443f82ee74f8e0308d53f5833414c07cd866219f
+Subproject commit 4f05e83334ec6a10e1ed93018affe9091a576f84