From ed8b16a88023b23c0446570d4e6bae6fcc6a5d6b Mon Sep 17 00:00:00 2001
From: Will Hawkins <whh8b@virginia.edu>
Date: Wed, 24 Feb 2021 22:38:14 -0500
Subject: [PATCH] Fix compilation errors in irdb-libs for modern versions of
 compiler, etc.

---
 irdb-libs/dump_insns/dump_insns.cpp         | 2 +-
 irdb-libs/dump_map/dump_ehp.cpp             | 2 +-
 irdb-libs/dump_map/dump_map.cpp             | 2 +-
 irdb-libs/ir_builders/clone.cpp             | 2 +-
 irdb-libs/ir_builders/fill_in_cfg.cpp       | 2 +-
 irdb-libs/ir_builders/fill_in_indtargs.cpp  | 4 ++--
 irdb-libs/ir_builders/fix_calls.cpp         | 2 +-
 irdb-libs/libIRDB-cfg/src/dfs.cpp           | 2 +-
 irdb-libs/libIRDB-core/src/IRDB_Objects.cpp | 4 ++--
 irdb-libs/libIRDB-core/src/cmdstr.hpp       | 1 +
 irdb-libs/libIRDB-core/src/fileir.cpp       | 5 ++++-
 irdb-libs/meds2pdb/meds2pdb.cpp             | 3 +++
 12 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/irdb-libs/dump_insns/dump_insns.cpp b/irdb-libs/dump_insns/dump_insns.cpp
index a51b71f07..6455f5924 100644
--- a/irdb-libs/dump_insns/dump_insns.cpp
+++ b/irdb-libs/dump_insns/dump_insns.cpp
@@ -103,7 +103,7 @@ int main(int argc, char **argv)
 
 
                 }
-                catch (DatabaseError_t pnide)
+                catch (const DatabaseError_t &pnide)
                 {
                         cerr << programName << ": Unexpected database error: " << pnide << "file url: " << this_file->getURL() << endl;
                 }
diff --git a/irdb-libs/dump_map/dump_ehp.cpp b/irdb-libs/dump_map/dump_ehp.cpp
index 1669bfd0d..e64edeb0f 100644
--- a/irdb-libs/dump_map/dump_ehp.cpp
+++ b/irdb-libs/dump_map/dump_ehp.cpp
@@ -99,7 +99,7 @@ int main(int argc, char **argv)
 
 
 	}
-	catch (DatabaseError_t pnide)
+	catch (const DatabaseError_t &pnide)
 	{
 		cerr << programName << ": Unexpected database error: " << pnide << "file url: " << this_file->getURL() << endl;
 	}
diff --git a/irdb-libs/dump_map/dump_map.cpp b/irdb-libs/dump_map/dump_map.cpp
index cd8bb4ef1..bb1303c82 100644
--- a/irdb-libs/dump_map/dump_map.cpp
+++ b/irdb-libs/dump_map/dump_map.cpp
@@ -128,7 +128,7 @@ int main(int argc, char **argv)
 
 
                 }
-                catch (DatabaseError_t pnide)
+                catch (const DatabaseError_t &pnide)
                 {
                         cerr << programName << ": Unexpected database error: " << pnide << "file url: " << this_file->getURL() << endl;
                 }
diff --git a/irdb-libs/ir_builders/clone.cpp b/irdb-libs/ir_builders/clone.cpp
index d5211b723..613019832 100644
--- a/irdb-libs/ir_builders/clone.cpp
+++ b/irdb-libs/ir_builders/clone.cpp
@@ -69,7 +69,7 @@ int main(int argc, char* argv[])
 		f.close();
 
 	}
-	catch (DatabaseError_t pnide)
+	catch (const DatabaseError_t &pnide)
 	{
 		cout<<"Unexpected database error: "<<pnide<<endl;
 		exit(-1);
diff --git a/irdb-libs/ir_builders/fill_in_cfg.cpp b/irdb-libs/ir_builders/fill_in_cfg.cpp
index ce4890e35..3ffcae6e9 100644
--- a/irdb-libs/ir_builders/fill_in_cfg.cpp
+++ b/irdb-libs/ir_builders/fill_in_cfg.cpp
@@ -1044,7 +1044,7 @@ int PopulateCFG::executeStep()
 			}
 		}
 	}
-	catch (DatabaseError_t pnide)
+	catch (const DatabaseError_t &pnide)
 	{
 		cerr<<"Unexpected database error: "<<pnide<<endl;
 		return -1;
diff --git a/irdb-libs/ir_builders/fill_in_indtargs.cpp b/irdb-libs/ir_builders/fill_in_indtargs.cpp
index 7f6d54714..d8b65a6e9 100644
--- a/irdb-libs/ir_builders/fill_in_indtargs.cpp
+++ b/irdb-libs/ir_builders/fill_in_indtargs.cpp
@@ -4014,7 +4014,7 @@ int parseArgs(const vector<string> step_args)
 			try { 
 				do_unpin_opt = stoul(arg_as_str,nullptr,0);
 			}
-			catch (invalid_argument ia)
+			catch (const invalid_argument &ia)
 			{
 				cerr<<"In --max-unpin, cannot convert "<<arg_as_str<<" to unsigned"<<endl;
 				exit(1);
@@ -4112,7 +4112,7 @@ int executeStep()
 			return -1;
 
 	}
-	catch (DatabaseError_t pnide)
+	catch (const DatabaseError_t &pnide)
 	{
 		cout << "Unexpected database error: " << pnide << endl;
 		return -1;
diff --git a/irdb-libs/ir_builders/fix_calls.cpp b/irdb-libs/ir_builders/fix_calls.cpp
index 044dcf9ff..fabfc4fa6 100644
--- a/irdb-libs/ir_builders/fix_calls.cpp
+++ b/irdb-libs/ir_builders/fix_calls.cpp
@@ -1053,7 +1053,7 @@ class FixCalls_t : public TransformStep_t
 
 				}
 			}
-			catch (DatabaseError_t pnide)
+			catch (const DatabaseError_t &pnide)
 			{
 				cout<<"Unexpected database error: "<<pnide<<endl;
 				return -1;
diff --git a/irdb-libs/libIRDB-cfg/src/dfs.cpp b/irdb-libs/libIRDB-cfg/src/dfs.cpp
index b8d28a260..d09ba506d 100644
--- a/irdb-libs/libIRDB-cfg/src/dfs.cpp
+++ b/irdb-libs/libIRDB-cfg/src/dfs.cpp
@@ -45,5 +45,5 @@ BasicBlockVector_t IRDB_SDK::getDFSOrder(ControlFlowGraph_t* cfg)
 			// add it to the dfs end.
 			ret.push_back(p.first);
 
-	return move(ret);
+	return ret;
 }
diff --git a/irdb-libs/libIRDB-core/src/IRDB_Objects.cpp b/irdb-libs/libIRDB-core/src/IRDB_Objects.cpp
index f61feee43..8c82eac98 100644
--- a/irdb-libs/libIRDB-core/src/IRDB_Objects.cpp
+++ b/irdb-libs/libIRDB-core/src/IRDB_Objects.cpp
@@ -69,7 +69,7 @@ int IRDBObjects_t::writeBackFileIR(const IRDB_SDK::DatabaseID_t file_id, ostream
 		the_fileIR->writeToDB(verbose_logging);
         	return 0;
 	}
-	catch (DatabaseError_t pnide)
+	catch (const DatabaseError_t &pnide)
 	{
 		cerr << "Unexpected database error: " << pnide << "file url: " << the_file->getURL() << endl;
 		return -1;
@@ -150,7 +150,7 @@ int IRDBObjects_t::writeBackVariant(const IRDB_SDK::DatabaseID_t variant_id)
 		it->second->WriteToDB();
         	return 0;
 	}
-	catch (DatabaseError_t pnide)
+	catch (const DatabaseError_t &pnide)
 	{
 		cerr << "Unexpected database error: " << pnide << "variant ID: " << variant_id << endl;
 		return -1;
diff --git a/irdb-libs/libIRDB-core/src/cmdstr.hpp b/irdb-libs/libIRDB-core/src/cmdstr.hpp
index eeccc1bb0..00e2b397f 100644
--- a/irdb-libs/libIRDB-core/src/cmdstr.hpp
+++ b/irdb-libs/libIRDB-core/src/cmdstr.hpp
@@ -12,6 +12,7 @@
 #include <string>
 #include <vector>
 #include <array>
+#include <functional>
 
 using namespace std;
 
diff --git a/irdb-libs/libIRDB-core/src/fileir.cpp b/irdb-libs/libIRDB-core/src/fileir.cpp
index 0183e261e..aaa9ec82a 100644
--- a/irdb-libs/libIRDB-core/src/fileir.cpp
+++ b/irdb-libs/libIRDB-core/src/fileir.cpp
@@ -36,6 +36,9 @@
 #include "cmdstr.hpp"
 #include "assemblestr.hpp"
 
+#include <pqxx/tablewriter.hxx>
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 using namespace libIRDB;
 using namespace std;
 
@@ -928,7 +931,7 @@ void FileIR_t::setArchitecture()
 	auto *mypqxxintr=dynamic_cast<pqxxDB_t*>(myinter);
 
 	const auto elfoid=getFile()->getELFOID();
-        pqxx::largeobjectaccess loa(mypqxxintr->getTransaction(), elfoid, PGSTD::ios::in);
+        pqxx::largeobjectaccess loa(mypqxxintr->getTransaction(), elfoid, std::ios::in);
 
 
         loa.cread((char*)&hdr_union, sizeof(hdr_union));
diff --git a/irdb-libs/meds2pdb/meds2pdb.cpp b/irdb-libs/meds2pdb/meds2pdb.cpp
index 67539ea7b..d9a5d3cdd 100644
--- a/irdb-libs/meds2pdb/meds2pdb.cpp
+++ b/irdb-libs/meds2pdb/meds2pdb.cpp
@@ -31,6 +31,9 @@
 #include "MEDS_FuncPrototypeAnnotation.hpp"
 #include <irdb-core>
 
+#include <pqxx/tablewriter.hxx>
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 using namespace std;
 using namespace pqxx;
 using namespace IRDB_SDK;
-- 
GitLab